diff --git a/asterixdb/LICENSE b/asterixdb/LICENSE
index e7b3a06..2d57e6e 100644
--- a/asterixdb/LICENSE
+++ b/asterixdb/LICENSE
@@ -268,7 +268,7 @@
        and
          asterix-app/src/main/resources/feed/smoothie.js
 
-   are available under the following license:
+   are available under The MIT License:
 ---
    Copyright (c) 2010-2013, Joe Walnes
 
@@ -458,7 +458,9 @@
 ---
    Portions of the AsterixDB API examples
        located at:
-         asterix-examples/src/main/resources/admaql101-demo/bottle.py
+         asterix-examples/src/main/resources/admaql101-demo/bottle.py,
+       and
+         asterix-examples/src/main/resources/tweetbook-demo/bottle.py
 
    are available under The MIT License:
 ---
@@ -513,5 +515,105 @@
 
    are available under The MIT License:
 ---
-   See https://opensource.org/licenses/mit-license.php
+   RainbowVis-JS
+   Released under MIT License
+
+   (text of The MIT License follows for convenience)
+
+   Copyright <YEAR> <COPYRIGHT HOLDER>
+
+   Permission is hereby granted, free of charge, to any person obtaining a copy of
+   this software and associated documentation files (the "Software"), to deal in
+   the Software without restriction, including without limitation the rights to
+   use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+   the Software, and to permit persons to whom the Software is furnished to do so,
+   subject to the following conditions:
+
+   The above copyright notice and this permission notice shall be included in all
+   copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+   FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+   COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+   IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+---
+   Portions of the AsterixDB API examples
+       located at:
+         asterix-examples/src/main/resources/admaql101-demo/static/js/jquery.min.js
+
+   are available under The MIT License:
+---
+   (https://github.com/jquery/jquery/blob/2.0.3/MIT-LICENSE.txt)
+   Copyright 2013 jQuery Foundation and other contributors
+   http://jquery.com/
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   "Software"), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
+
+   The above copyright notice and this permission notice shall be
+   included in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+   LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+   OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+   WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+---
+   Portions of the AsterixDB API examples
+       located at:
+         asterix-examples/src/main/resources/admaql101-demo/static/js/bootstrap.min.js
+
+   are available under The Apache Software License, Version 2.0:
+---
+   bootstrap.js v3.0.0 by @fat and @mdo
+
+   Copyright 2013 Twitter Inc.
+
+   http://www.apache.org/licenses/LICENSE-2.0
+---
+   Portions of the AsterixDB API examples
+       located at:
+         asterix-examples/src/main/resources/admaql101-demo/static/css/bootstrap.min.css
+
+   are available under The Apache Software License, Version 2.0:
+---
+   Bootstrap v3.0.0
+
+   Copyright 2013 Twitter, Inc
+
+   Licensed under the Apache License v2.0
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Designed and built with all the love in the world by @mdo and @fat.
+
+   also contains normalize.css v2.1.0, under the following license:
+   (https://github.com/necolas/normalize.css/blob/v2.1.0/LICENSE.md)
+
+   Copyright (c) Nicolas Gallagher and Jonathan Neal
+
+   Permission is hereby granted, free of charge, to any person obtaining a copy of
+   this software and associated documentation files (the "Software"), to deal in
+   the Software without restriction, including without limitation the rights to
+   use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+   the Software, and to permit persons to whom the Software is furnished to do so,
+   subject to the following conditions:
+
+   The above copyright notice and this permission notice shall be included in all
+   copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+   FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+   COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+   IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 ---
diff --git a/asterixdb/asterix-app/pom.xml b/asterixdb/asterix-app/pom.xml
index f5cd6d9..f4667d0 100644
--- a/asterixdb/asterix-app/pom.xml
+++ b/asterixdb/asterix-app/pom.xml
@@ -352,7 +352,6 @@
     <dependency>
       <groupId>javax.xml.bind</groupId>
       <artifactId>jaxb-api</artifactId>
-      <version>2.2.2</version>
       <scope>test</scope>
     </dependency>
     <dependency>
diff --git a/asterixdb/asterix-examples/src/main/appended-resources/META-INF/LICENSE b/asterixdb/asterix-examples/src/main/appended-resources/META-INF/LICENSE
index 811623a..f694cb5 100644
--- a/asterixdb/asterix-examples/src/main/appended-resources/META-INF/LICENSE
+++ b/asterixdb/asterix-examples/src/main/appended-resources/META-INF/LICENSE
@@ -7,25 +7,164 @@
 subcomponents is subject to the terms and condition of the following
 licenses.
 
+---
+   Portions of the AsterixDB API examples
+       located at:
+         src/main/resources/admaql101-demo/bottle.py,
+       and
+         src/main/resources/tweetbook-demo/bottle.py
 
------------------------------------------------------------------------
- The MIT License
------------------------------------------------------------------------
+   are available under The MIT License:
+---
+   Copyright (c) 2014, Marcel Hellkamp.
 
- - jQuery (src/main/resources/admaql101-demo/static/js)
- - Bootstrap (src/main/resources/admaql101-demo/static/js/bootstrap.min.js),
-             (src/main/resources/tweetbook-demo/static/js/bootstrap.min.js)
- - Bottle (src/main/resources/tweetbook-demo/bottle.py, src/main/resources/admaql101-demo/bottle.py)
- - geostats (src/main/resources/tweetbook-demo/static/js/geostats.js)
+   Permission is hereby granted, free of charge, to any person obtaining a copy
+   of this software and associated documentation files (the "Software"), to deal
+   in the Software without restriction, including without limitation the rights
+   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+   copies of the Software, and to permit persons to whom the Software is
+   furnished to do so, subject to the following conditions:
 
-The text of The MIT License is below for convenience. Refer to the website of each project for exact details.
+   The above copyright notice and this permission notice shall be included in
+   all copies or substantial portions of the Software.
 
-The MIT License (MIT)
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+   THE SOFTWARE.
+---
+   Portions of the AsterixDB API examples
+       located at:
+         src/main/resources/tweetbook-demo/static/js/geostats.js
 
-Copyright (c) <year> <copyright holders>
+   are available under The MIT License:
+---
+   Copyright (c) 2011 Simon Georget
 
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+   Permission is hereby granted, free of charge, to any person obtaining a copy of
+   this software and associated documentation files (the "Software"), to deal in
+   the Software without restriction, including without limitation the rights to
+   use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+   the Software, and to permit persons to whom the Software is furnished to do so,
+   subject to the following conditions:
 
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+   The above copyright notice and this permission notice shall be included in all
+   copies or substantial portions of the Software.
 
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+   FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+   COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+   IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+   Portions of the AsterixDB API examples
+       located at:
+         src/main/resources/tweetbook-demo/static/js/rainbowvis.js
+
+   are available under The MIT License:
+---
+   RainbowVis-JS
+   Released under MIT License
+
+   (text of The MIT License follows for convenience)
+
+   Copyright <YEAR> <COPYRIGHT HOLDER>
+
+   Permission is hereby granted, free of charge, to any person obtaining a copy of
+   this software and associated documentation files (the "Software"), to deal in
+   the Software without restriction, including without limitation the rights to
+   use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+   the Software, and to permit persons to whom the Software is furnished to do so,
+   subject to the following conditions:
+
+   The above copyright notice and this permission notice shall be included in all
+   copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+   FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+   COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+   IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+---
+   Portions of the AsterixDB API examples
+       located at:
+         src/main/resources/admaql101-demo/static/js/jquery.min.js
+
+   are available under The MIT License:
+---
+   (https://github.com/jquery/jquery/blob/2.0.3/MIT-LICENSE.txt)
+   Copyright 2013 jQuery Foundation and other contributors
+   http://jquery.com/
+
+   Permission is hereby granted, free of charge, to any person obtaining
+   a copy of this software and associated documentation files (the
+   "Software"), to deal in the Software without restriction, including
+   without limitation the rights to use, copy, modify, merge, publish,
+   distribute, sublicense, and/or sell copies of the Software, and to
+   permit persons to whom the Software is furnished to do so, subject to
+   the following conditions:
+
+   The above copyright notice and this permission notice shall be
+   included in all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+   LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+   OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+   WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+---
+   Portions of the AsterixDB API examples
+       located at:
+         src/main/resources/admaql101-demo/static/js/bootstrap.min.js
+
+   are available under The Apache Software License, Version 2.0:
+---
+   bootstrap.js v3.0.0 by @fat and @mdo
+
+   Copyright 2013 Twitter Inc.
+
+   http://www.apache.org/licenses/LICENSE-2.0
+---
+   Portions of the AsterixDB API examples
+       located at:
+         src/main/resources/admaql101-demo/static/css/bootstrap.min.css
+
+   are available under The Apache Software License, Version 2.0:
+---
+   Bootstrap v3.0.0
+
+   Copyright 2013 Twitter, Inc
+
+   Licensed under the Apache License v2.0
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Designed and built with all the love in the world by @mdo and @fat.
+
+   also contains normalize.css v2.1.0, under the following license:
+   (https://github.com/necolas/normalize.css/blob/v2.1.0/LICENSE.md)
+
+   Copyright (c) Nicolas Gallagher and Jonathan Neal
+
+   Permission is hereby granted, free of charge, to any person obtaining a copy of
+   this software and associated documentation files (the "Software"), to deal in
+   the Software without restriction, including without limitation the rights to
+   use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+   the Software, and to permit persons to whom the Software is furnished to do so,
+   subject to the following conditions:
+
+   The above copyright notice and this permission notice shall be included in all
+   copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+   FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+   COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+   IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+---
diff --git a/asterixdb/asterix-installer/pom.xml b/asterixdb/asterix-installer/pom.xml
index efd1106..df36c80 100644
--- a/asterixdb/asterix-installer/pom.xml
+++ b/asterixdb/asterix-installer/pom.xml
@@ -129,7 +129,7 @@
             </override>
           </overrides>
           <templateProperties>
-            <packageName>Managix Install</packageName>
+            <packageName>Apache AsterixDB Managix Install</packageName>
             <asterixAppLocation>repo/asterix-app-${project.version}.jar, within asterix/asterix-server-${project.version}-binary-assembly.zip</asterixAppLocation>
             <hyracksControlCcLocation>repo/hyracks-control-cc-${project.version}.jar, within asterix/asterix-server-${project.version}-binary-assembly.zip</hyracksControlCcLocation>
             <hivecompatLocation>repo/asterix-hivecompat-${project.version}.jar, within asterix/asterix-server-${project.version}-binary-assembly.zip</hivecompatLocation>
@@ -459,7 +459,6 @@
     <dependency>
       <groupId>javax.xml.bind</groupId>
       <artifactId>jaxb-api</artifactId>
-      <version>2.2.2</version>
     </dependency>
     <dependency>
       <groupId>org.apache.hyracks</groupId>
diff --git a/asterixdb/asterix-metadata/pom.xml b/asterixdb/asterix-metadata/pom.xml
index 418bfbe..c73b1a4 100644
--- a/asterixdb/asterix-metadata/pom.xml
+++ b/asterixdb/asterix-metadata/pom.xml
@@ -119,7 +119,6 @@
     <dependency>
       <groupId>javax.xml.bind</groupId>
       <artifactId>jaxb-api</artifactId>
-      <version>2.2.2</version>
     </dependency>
     <dependency>
       <groupId>org.apache.commons</groupId>
diff --git a/asterixdb/asterix-server/pom.xml b/asterixdb/asterix-server/pom.xml
index bf04282..3454428 100644
--- a/asterixdb/asterix-server/pom.xml
+++ b/asterixdb/asterix-server/pom.xml
@@ -94,7 +94,7 @@
             </override>
             <override>
               <gav>com.thoughtworks.paranamer:paranamer:2.3</gav>
-              <url>https://raw.githubusercontent.com/codehaus/paranamer-git/master/LICENSE.txt</url>
+              <url>https://github.com/codehaus/paranamer-git/blob/paranamer-2.3/LICENSE.txt</url>
             </override>
             <override>
               <gav>org.codehaus.jettison:jettison:1.1</gav>
@@ -118,25 +118,32 @@
             </override>
             <override>
               <gav>com.google.protobuf:protobuf-java:2.5.0</gav>
-              <url>https://raw.githubusercontent.com/google/protobuf/master/LICENSE</url>
+              <url>https://github.com/google/protobuf/blob/v2.5.0/COPYING.txt</url>
             </override>
             <override>
               <gav>xmlenc:xmlenc:0.52</gav>
-              <url>xmlenc_0.52_LICENSE</url>
+              <url>https://cytranet.dl.sourceforge.net/project/xmlenc/xmlenc/0.52/xmlenc-0.52.tgz?xmlenc-0.52/COPYRIGHT</url>
             </override>
           </overrides>
           <licenses>
             <license>
-              <url>https://raw.githubusercontent.com/google/protobuf/master/LICENSE</url>
+              <displayName>a BSD 3-clause license</displayName>
+              <url>http://asm.objectweb.org/license.html</url>
+            </license>
+            <license>
+              <displayName>a BSD 3-clause license</displayName>
+              <url>https://github.com/google/protobuf/blob/v2.5.0/COPYING.txt</url>
               <contentFile>protobuf_2.5.0_LICENSE.txt</contentFile>
             </license>
             <license>
-              <url>xmlenc_0.52_LICENSE</url>
-              <contentFile>xmlenc_0.52_LICENSE.txt</contentFile>
+              <displayName>a BSD 3-clause license</displayName>
+              <url>https://github.com/codehaus/paranamer-git/blob/paranamer-2.3/LICENSE.txt</url>
+              <contentFile>paranamer-2.3_LICENSE.txt</contentFile>
             </license>
             <license>
-              <url>https://raw.githubusercontent.com/hamcrest/JavaHamcrest/1260407ae3d2786cb54b8be52ebe041e54ccd6ac/LICENSE.txt</url>
-              <contentFile>hamcrest_1.3_LICENSE.txt</contentFile>
+              <displayName>a BSD 3-clause license</displayName>
+              <url>https://cytranet.dl.sourceforge.net/project/xmlenc/xmlenc/0.52/xmlenc-0.52.tgz?xmlenc-0.52/COPYRIGHT</url>
+              <contentFile>xmlenc_0.52_LICENSE.txt</contentFile>
             </license>
             <license>
               <displayName>The Apache Software License, Version 2.0</displayName>
@@ -151,7 +158,7 @@
             <license>
               <url>https://java.net/projects/stax-utils/sources/svn/content/trunk/LICENSE</url>
               <contentFile>stax-utils_LICENSE.txt</contentFile>
-              <displayName>a BSD-style License</displayName>
+              <displayName>a BSD 3-clause license</displayName>
               <aliasUrls>
                 <aliasUrl>https://stax-utils.dev.java.net/source/browse/*checkout*/stax-utils/LICENSE</aliasUrl>
               </aliasUrls>
@@ -207,7 +214,7 @@
             </license>
           </licenses>
           <templateProperties>
-            <packageName>Server Install</packageName>
+            <packageName>Apache AsterixDB Server Install</packageName>
             <asterixAppLocation>repo/asterix-app-${project.version}.jar, within this assembly</asterixAppLocation>
             <hyracksControlCcLocation>repo/hyracks-control-cc-${project.version}.jar, within this assembly</hyracksControlCcLocation>
             <hivecompatLocation>repo/asterix-hivecompat-${project.version}.jar, within this assembly</hivecompatLocation>
diff --git a/asterixdb/asterix-yarn/pom.xml b/asterixdb/asterix-yarn/pom.xml
index 120f665..5491f9f 100644
--- a/asterixdb/asterix-yarn/pom.xml
+++ b/asterixdb/asterix-yarn/pom.xml
@@ -169,7 +169,7 @@
             </override>
             <override>
               <gav>com.google.protobuf:protobuf-java:2.5.0</gav>
-              <url>https://raw.githubusercontent.com/google/protobuf/master/LICENSE</url>
+              <url>https://github.com/google/protobuf/blob/v2.5.0/COPYING.txt</url>
             </override>
           </overrides>
           <licenses>
@@ -177,13 +177,9 @@
               <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
               <aliasUrls>http://www.apache.org/licenses/LICENSE-2.0</aliasUrls>
             </license>
-            <license>
-              <url>https://opensource.org/licenses/mit-license.php</url>
-              <aliasUrls>http://www.opensource.org/li]censes/mit-license.php</aliasUrls>
-            </license>
           </licenses>
           <templateProperties>
-            <packageName>YARN Install</packageName>
+            <packageName>Apache AsterixDB YARN Install</packageName>
             <asterixAppLocation>repo/asterix-app-${project.version}.jar, within asterix/asterix-server-${project.version}-binary-assembly.zip</asterixAppLocation>
             <hyracksControlCcLocation>repo/hyracks-control-cc-${project.version}.jar, within asterix/asterix-server-${project.version}-binary-assembly.zip</hyracksControlCcLocation>
             <hivecompatLocation>repo/asterix-hivecompat-${project.version}.jar, within asterix/asterix-server-${project.version}-binary-assembly.zip</hivecompatLocation>
@@ -431,7 +427,6 @@
     <dependency>
       <groupId>javax.xml.bind</groupId>
       <artifactId>jaxb-api</artifactId>
-      <version>2.2.2</version>
     </dependency>
     <dependency>
       <groupId>org.apache.hadoop</groupId>
diff --git a/asterixdb/pom.xml b/asterixdb/pom.xml
index 93e2598..ea80127 100644
--- a/asterixdb/pom.xml
+++ b/asterixdb/pom.xml
@@ -1058,6 +1058,11 @@
           </exclusion>
         </exclusions>
       </dependency>
+      <dependency>
+        <groupId>javax.xml.bind</groupId>
+        <artifactId>jaxb-api</artifactId>
+        <version>2.2.12</version>
+      </dependency>
     </dependencies>
   </dependencyManagement>
 </project>
diff --git a/asterixdb/src/main/appended-resources/supplemental-models.xml b/asterixdb/src/main/appended-resources/supplemental-models.xml
index f87a1a7..aa57859 100644
--- a/asterixdb/src/main/appended-resources/supplemental-models.xml
+++ b/asterixdb/src/main/appended-resources/supplemental-models.xml
@@ -73,7 +73,7 @@
       </organization>
       <licenses>
         <license>
-          <name>The BSD License</name>
+          <name>a BSD 3-clause license</name>
           <url>http://jline.sourceforge.net/license.html</url>
         </license>
       </licenses>
@@ -81,6 +81,18 @@
   </supplement>
   <supplement>
     <project>
+      <groupId>com.jcraft</groupId>
+      <artifactId>jsch</artifactId>
+      <licenses>
+        <license>
+          <name>a BSD 3-clause license</name>
+          <url>http://www.jcraft.com/jsch/LICENSE.txt</url>
+        </license>
+      </licenses>
+    </project>
+  </supplement>
+  <supplement>
+    <project>
       <groupId>aopalliance</groupId>
       <artifactId>aopalliance</artifactId>
       <name>XML Pull Parsing API</name>
@@ -100,6 +112,7 @@
       <groupId>javax.servlet</groupId>
       <artifactId>servlet-api</artifactId>
       <name>Java Servlet API</name>
+      <url>https://jcp.org/aboutJava/communityprocess/mrel/jsr154/index.html</url>
       <organization>
         <name>Oracle Corporation</name>
         <url>http://www.oracle.com/</url>
@@ -114,6 +127,18 @@
   </supplement>
   <supplement>
     <project>
+      <groupId>jdom</groupId>
+      <artifactId>jdom</artifactId>
+      <licenses>
+        <license>
+          <name>an ASL v1.1-style license</name>
+          <url>licenses/jdom.txt</url>
+        </license>
+      </licenses>
+    </project>
+  </supplement>
+  <supplement>
+    <project>
       <groupId>rome</groupId>
       <artifactId>rome</artifactId>
       <name>ROME</name>
diff --git a/asterixdb/src/main/licenses/content/raw.githubusercontent.com_codehaus_paranamer-git_master_LICENSE.txt b/asterixdb/src/main/licenses/content/paranamer-2.3_LICENSE.txt
similarity index 100%
rename from asterixdb/src/main/licenses/content/raw.githubusercontent.com_codehaus_paranamer-git_master_LICENSE.txt
rename to asterixdb/src/main/licenses/content/paranamer-2.3_LICENSE.txt
diff --git a/asterixdb/src/main/licenses/content/protobuf_2.5.0_LICENSE.txt b/asterixdb/src/main/licenses/content/protobuf_2.5.0_LICENSE.txt
index 2dcab42..fb69007 100644
--- a/asterixdb/src/main/licenses/content/protobuf_2.5.0_LICENSE.txt
+++ b/asterixdb/src/main/licenses/content/protobuf_2.5.0_LICENSE.txt
@@ -1,4 +1,5 @@
-Copyright 2014, Google Inc.  All rights reserved.
+Copyright 2008, Google Inc.
+All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
@@ -29,4 +30,4 @@
 Code generated by the Protocol Buffer compiler is owned by the owner
 of the input file used when generating it.  This code is not
 standalone and requires a support library to be linked with it.  This
-support library is itself covered by the above license.
+support library is itself covered by the above license.
\ No newline at end of file
diff --git a/asterixdb/src/main/licenses/templates/asterix-license.ftl b/asterixdb/src/main/licenses/templates/asterix-license.ftl
index 31c94c4..a4152ac 100644
--- a/asterixdb/src/main/licenses/templates/asterix-license.ftl
+++ b/asterixdb/src/main/licenses/templates/asterix-license.ftl
@@ -45,7 +45,7 @@
    </#if>
    <#list projects as p>
        * ${p.name} (${p.groupId}:${p.artifactId}:${p.version})
-       <#list p.locations as loc>
+     <#list p.locations as loc>
          - ${loc}${p.artifactId}-${p.version}.jar
        </#list>
    </#list>
diff --git a/asterixdb/src/main/licenses/templates/asterix-notice.ftl b/asterixdb/src/main/licenses/templates/asterix-notice.ftl
index 6c96c88..030da26 100644
--- a/asterixdb/src/main/licenses/templates/asterix-notice.ftl
+++ b/asterixdb/src/main/licenses/templates/asterix-notice.ftl
@@ -18,7 +18,7 @@
 -->
 <#-- TODO(mblow): share notice file template with hyracks via maven artifact -->
 <#if packageName?has_content>
-Apache AsterixDB ${packageName!}
+${packageName!}
 <#else>
 Apache AsterixDB
 </#if>
@@ -29,11 +29,12 @@
 <#list noticeMap>
 
 AsterixDB utilizes many libraries, which come with the following applicable NOTICE(s):
-
 <#items as e>
    <#assign noticeText = e.getKey()/>
    <#assign projects = e.getValue()/>
+
    <#list projects as p>
+${p.name} (${p.groupId}:${p.artifactId}:${p.version})
        <#list p.locations as loc>
 - ${loc}${p.artifactId}-${p.version}.jar
        </#list>
@@ -42,6 +43,5 @@
 <@indent spaces=6>
 ${noticeText}
 </@indent>
-
 </#items>
 </#list>
diff --git a/asterixdb/src/main/licenses/templates/source_licenses.ftl b/asterixdb/src/main/licenses/templates/source_licenses.ftl
index e13183c..191d953 100644
--- a/asterixdb/src/main/licenses/templates/source_licenses.ftl
+++ b/asterixdb/src/main/licenses/templates/source_licenses.ftl
@@ -87,7 +87,7 @@
    Copyright 2012 Twitter, Inc.
    http://www.apache.org/licenses/LICENSE-2.0.txt
 </@license>
-<@license files=["webui/static/js/smoothie.js", "feed/smoothie.js"]>
+<@license files=["webui/static/js/smoothie.js", "feed/smoothie.js"] licenseName="The MIT License">
 Copyright (c) 2010-2013, Joe Walnes
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/asterixdb/src/main/licenses/templates/source_only_licenses.ftl b/asterixdb/src/main/licenses/templates/source_only_licenses.ftl
index 376b1bf..8bf0c56 100644
--- a/asterixdb/src/main/licenses/templates/source_only_licenses.ftl
+++ b/asterixdb/src/main/licenses/templates/source_only_licenses.ftl
@@ -40,7 +40,8 @@
 </@indent>
 ---
 </#macro>
-<@license files="asterix-examples/src/main/resources/admaql101-demo/bottle.py"
+<@license files=["asterix-examples/src/main/resources/admaql101-demo/bottle.py",
+                 "asterix-examples/src/main/resources/tweetbook-demo/bottle.py"]
           component="AsterixDB API examples" licenseName="The MIT License">
     Copyright (c) 2014, Marcel Hellkamp.
 
@@ -74,7 +75,71 @@
 </@license>
 <@license files="asterix-examples/src/main/resources/tweetbook-demo/static/js/rainbowvis.js"
           component="AsterixDB API examples" licenseName="The MIT License">
+RainbowVis-JS
+Released under MIT License
 
-See https://opensource.org/licenses/mit-license.php
+(text of The MIT License follows for convenience)
 
+Copyright <YEAR> <COPYRIGHT HOLDER>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+</@license>
+<@license files="asterix-examples/src/main/resources/admaql101-demo/static/js/jquery.min.js"
+          component="AsterixDB API examples" licenseName="The MIT License">
+(https://github.com/jquery/jquery/blob/2.0.3/MIT-LICENSE.txt)
+Copyright 2013 jQuery Foundation and other contributors
+http://jquery.com/
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+</@license>
+<@license files="asterix-examples/src/main/resources/admaql101-demo/static/js/bootstrap.min.js"
+          component="AsterixDB API examples" licenseName="The Apache Software License, Version 2.0">
+bootstrap.js v3.0.0 by @fat and @mdo
+
+Copyright 2013 Twitter Inc.
+
+http://www.apache.org/licenses/LICENSE-2.0
+</@license>
+<@license files="asterix-examples/src/main/resources/admaql101-demo/static/css/bootstrap.min.css"
+          component="AsterixDB API examples" licenseName="The Apache Software License, Version 2.0">
+Bootstrap v3.0.0
+
+Copyright 2013 Twitter, Inc
+
+Licensed under the Apache License v2.0
+http://www.apache.org/licenses/LICENSE-2.0
+
+Designed and built with all the love in the world by @mdo and @fat.
+
+also contains normalize.css v2.1.0, under the following license:
+(https://github.com/necolas/normalize.css/blob/v2.1.0/LICENSE.md)
+
+Copyright (c) Nicolas Gallagher and Jonathan Neal
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 </@license>
diff --git a/hyracks-fullstack/NOTICE b/hyracks-fullstack/NOTICE
index 4888468..d44f7a0 100644
--- a/hyracks-fullstack/NOTICE
+++ b/hyracks-fullstack/NOTICE
@@ -1,4 +1,4 @@
-Apache AsterixDB Hyracks and Algebricks
+Apache Hyracks and Algebricks
 Copyright 2015-2017 The Apache Software Foundation
 
 This product includes software developed at
diff --git a/hyracks-fullstack/hyracks-fullstack-license/pom.xml b/hyracks-fullstack/hyracks-fullstack-license/pom.xml
index 201a628..7326284 100644
--- a/hyracks-fullstack/hyracks-fullstack-license/pom.xml
+++ b/hyracks-fullstack/hyracks-fullstack-license/pom.xml
@@ -59,8 +59,7 @@
               <outputFile>LICENSE</outputFile>
             </generatedFile>
             <generatedFile>
-              <!-- TODO(mblow): share the template with asterixdb as a maven artifact -->
-              <template>asterix-notice.ftl</template>
+              <template>hyracks-notice.ftl</template>
               <outputFile>NOTICE</outputFile>
             </generatedFile>
           </generatedFiles>
@@ -83,7 +82,7 @@
           <templateProperties>
             <hyracksControlCcLocation />
             <hyracksControlCcResourcesPrefix>hyracks/hyracks-control/hyracks-control-cc/src/main/resources/</hyracksControlCcResourcesPrefix>
-            <packageName>Hyracks and Algebricks</packageName>
+            <packageName>Apache Hyracks and Algebricks</packageName>
           </templateProperties>
         </configuration>
       </plugin>
diff --git a/hyracks-fullstack/hyracks-fullstack-license/src/main/licenses/templates/asterix-notice.ftl b/hyracks-fullstack/hyracks-fullstack-license/src/main/licenses/templates/hyracks-notice.ftl
similarity index 87%
rename from hyracks-fullstack/hyracks-fullstack-license/src/main/licenses/templates/asterix-notice.ftl
rename to hyracks-fullstack/hyracks-fullstack-license/src/main/licenses/templates/hyracks-notice.ftl
index 6b0570c..c59e80a 100644
--- a/hyracks-fullstack/hyracks-fullstack-license/src/main/licenses/templates/asterix-notice.ftl
+++ b/hyracks-fullstack/hyracks-fullstack-license/src/main/licenses/templates/hyracks-notice.ftl
@@ -17,23 +17,20 @@
  ! under the License.
 -->
 <#-- TODO(mblow): share notice file template with asterixdb via maven artifact -->
-<#if packageName?has_content>
-Apache AsterixDB ${packageName!}
-<#else>
-Apache AsterixDB
-</#if>
+Apache Hyracks and Algebricks
 Copyright 2015-2017 The Apache Software Foundation
 
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).
 <#list noticeMap>
 
-AsterixDB utilizes many libraries, which come with the following applicable NOTICE(s):
+Hyracks and Algebricks utilize many libraries, which come with the following applicable NOTICE(s):
 
 <#items as e>
    <#assign noticeText = e.getKey()/>
    <#assign projects = e.getValue()/>
    <#list projects as p>
+${p.name} (${p.groupId}:${p.artifactId}:${p.version})
        <#list p.locations as loc>
 - ${loc}${p.artifactId}-${p.version}.jar
        </#list>
diff --git a/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/pom.xml b/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/pom.xml
index 36c4edf..193f9e8 100644
--- a/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/pom.xml
+++ b/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/pom.xml
@@ -85,6 +85,11 @@
       <artifactId>maven-artifact</artifactId>
       <version>3.0</version>
     </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-compat</artifactId>
+      <version>3.3.9</version>
+    </dependency>
   </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/GenerateFileMojo.java b/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/GenerateFileMojo.java
index fa5429a..b604f18 100644
--- a/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/GenerateFileMojo.java
+++ b/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/GenerateFileMojo.java
@@ -22,8 +22,11 @@
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.StringWriter;
+import java.lang.Override;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
 import java.util.Comparator;
 import java.util.Enumeration;
 import java.util.HashMap;
@@ -31,6 +34,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Random;
 import java.util.Set;
 import java.util.SortedMap;
 import java.util.SortedSet;
@@ -49,17 +53,31 @@
 import freemarker.template.Configuration;
 import freemarker.template.Template;
 import freemarker.template.TemplateException;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
 import org.apache.hyracks.maven.license.freemarker.IndentDirective;
 import org.apache.hyracks.maven.license.freemarker.LoadFileDirective;
 import org.apache.hyracks.maven.license.project.LicensedProjects;
 import org.apache.hyracks.maven.license.project.Project;
-import org.apache.commons.io.IOUtils;
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.DefaultArtifact;
+import org.apache.maven.artifact.metadata.ArtifactMetadata;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
+import org.apache.maven.artifact.repository.Authentication;
+import org.apache.maven.artifact.repository.DefaultRepositoryRequest;
+import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
+import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
+import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.plugins.annotations.ResolutionScope;
+import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectBuildingException;
+import org.apache.maven.repository.Proxy;
 
 @Mojo(name = "generate",
         requiresProject = true,
@@ -109,15 +127,68 @@
             resolveNoticeFiles();
             resolveLicenseFiles();
             rebuildLicenseContentProjectMap();
-            buildNoticeProjectMap();
-            persistLicenseMap();
             combineCommonGavs();
+            collectSourceAssemblies();
+            persistLicenseMap();
+            buildNoticeProjectMap();
             generateFiles();
         } catch (IOException | TemplateException | ProjectBuildingException e) {
             throw new MojoExecutionException("Unexpected exception: " + e, e);
         }
     }
 
+    private void collectSourceAssemblies() throws ProjectBuildingException, IOException {
+        try (StubArtifactRepository stubRepo = new StubArtifactRepository()) {
+            DefaultRepositoryRequest rr = new DefaultRepositoryRequest();
+            rr.setLocalRepository(stubRepo);
+            ArtifactRepository central = getCentralRepository();
+            rr.setRemoteRepositories(Collections.singletonList(central));
+            ArtifactResolutionRequest request = new ArtifactResolutionRequest(rr);
+            for (LicensedProjects lp : licenseMap.values()) {
+                if (lp.getLicense().getDisplayName() != null
+                        && lp.getLicense().getDisplayName().toLowerCase().contains("cddl")) {
+                    ensureCDDLSourcesPointer(lp.getProjects(), central, request);
+                }
+            }
+        }
+    }
+
+    private void ensureCDDLSourcesPointer(Collection<Project> projects, ArtifactRepository central,
+                                          ArtifactResolutionRequest request) throws ProjectBuildingException {
+        for (Project p : projects) {
+            if (p.getSourcePointer() != null) {
+                continue;
+            }
+            getLog().debug("finding sources for artifact: " + p);
+            Artifact sourcesArtifact = new DefaultArtifact(p.getGroupId(), p.getArtifactId(),
+                    p.getVersion(), Artifact.SCOPE_COMPILE, "jar", "sources", null);
+            MavenProject mavenProject = resolveDependency(sourcesArtifact);
+            sourcesArtifact.setArtifactHandler(mavenProject.getArtifact().getArtifactHandler());
+
+            request.setArtifact(sourcesArtifact);
+            ArtifactResolutionResult result = artifactResolver.resolve(request);
+            getLog().debug("result: " + result);
+            StringBuilder noticeBuilder = new StringBuilder("You may obtain ");
+            noticeBuilder.append(p.getName()).append(" in Source Code form code here:\n");
+            if (result.isSuccess()) {
+                noticeBuilder.append(central.getUrl()).append("/").append(central.pathOf(sourcesArtifact));
+            } else {
+                getLog().warn("Unable to find sources in 'central' for " + p + ", falling back to project url: "
+                        + p.getUrl());
+                noticeBuilder.append(p.getUrl() != null ? p.getUrl() : "MISSING SOURCE POINTER");
+            }
+            p.setSourcePointer(noticeBuilder.toString());
+        }
+    }
+
+    private ArtifactRepository getCentralRepository() {
+        for (ArtifactRepository repo : session.getRequest().getRemoteRepositories()) {
+            if ("central".equals(repo.getId())) {
+                return repo;
+            }
+        }
+        throw new IllegalStateException("Unable to find 'central' remote repository!");
+    }
 
     private void resolveLicenseContent() throws IOException {
         Set<LicenseSpec> licenseSpecs = new HashSet<>();
@@ -220,9 +291,9 @@
                         spec.setDisplayName(projects.getLicense().getDisplayName());
                     }
                 }
-                for (Project project : projects.getProjects()) {
-                    project.setLocation(extraLicenseFile.getLocation());
-                    addProject(project, projects.getLicense(), extraLicenseFile.isAdditive());
+                for (Project p : projects.getProjects()) {
+                    p.setLocation(extraLicenseFile.getLocation());
+                    addProject(p, projects.getLicense(), extraLicenseFile.isAdditive());
                 }
             }
         }
@@ -244,10 +315,10 @@
         int counter = 0;
         Map<String, LicensedProjects> licenseMap2 = new TreeMap<>(WHITESPACE_NORMALIZED_COMPARATOR);
         for (LicensedProjects lps : licenseMap.values()) {
-            for (Project project : lps.getProjects()) {
-                String licenseText = project.getLicenseText();
+            for (Project p : lps.getProjects()) {
+                String licenseText = p.getLicenseText();
                 if (licenseText == null) {
-                    getLog().warn("Using license other than from within artifact: " + project.gav());
+                    getLog().warn("Using license other than from within artifact: " + p.gav());
                     licenseText = resolveLicenseContent(lps.getLicense(), false);
                 }
                 LicenseSpec spec = lps.getLicense();
@@ -268,7 +339,7 @@
                 if (lp2.getLicense().getDisplayName() == null) {
                     lp2.getLicense().setDisplayName(lps.getLicense().getDisplayName());
                 }
-                lp2.addProject(project);
+                lp2.addProject(p);
             }
         }
         licenseMap = licenseMap2;
@@ -282,15 +353,26 @@
 
     private void buildNoticeProjectMap() {
         noticeMap = new TreeMap<>(WHITESPACE_NORMALIZED_COMPARATOR);
-        for (Project project : getProjects()) {
-            final String noticeText = project.getNoticeText();
+        for (Project p : getProjects()) {
+            prependSourcePointerToNotice(p);
+            final String noticeText = p.getNoticeText();
             if (noticeText == null) {
                 continue;
             }
             if (!noticeMap.containsKey(noticeText)) {
                 noticeMap.put(noticeText, new TreeSet<>(Project.PROJECT_COMPARATOR));
             }
-            noticeMap.get(noticeText).add(project);
+            noticeMap.get(noticeText).add(p);
+        }
+    }
+
+    private void prependSourcePointerToNotice(Project project) {
+        if (project.getSourcePointer() != null) {
+            String notice = project.getSourcePointer().replace("\n", "\n    ");
+            if (project.getNoticeText() != null) {
+                notice += "\n\n" + project.getNoticeText();
+            }
+            project.setNoticeText(notice);
         }
     }
 
@@ -308,8 +390,8 @@
     private void resolveArtifactFiles(final String name, Predicate<JarEntry> filter,
                                       BiConsumer<Project, String> consumer, UnaryOperator<String> contentTransformer)
             throws MojoExecutionException, IOException {
-        for (Project project : getProjects()) {
-            File artifactFile = new File(project.getArtifactPath());
+        for (Project p : getProjects()) {
+            File artifactFile = new File(p.getArtifactPath());
             if (!artifactFile.exists()) {
                 throw new MojoExecutionException("Artifact file " + artifactFile + " does not exist!");
             } else if (!artifactFile.getName().endsWith(".jar")) {
@@ -320,15 +402,15 @@
                 SortedMap<String, JarEntry> matches = gatherMatchingEntries(jarFile,
                         filter);
                 if (matches.isEmpty()) {
-                    getLog().warn("No " + name + " file found for " + project.gav());
+                    getLog().warn("No " + name + " file found for " + p.gav());
                 } else {
                     if (matches.size() > 1) {
-                        getLog().warn("Multiple " + name + " files found for " + project.gav() + ": " + matches.keySet()
+                        getLog().warn("Multiple " + name + " files found for " + p.gav() + ": " + matches.keySet()
                                 + "; taking first");
                     } else {
-                        getLog().info(project.gav() + " has " + name + " file: " + matches.keySet());
+                        getLog().info(p.gav() + " has " + name + " file: " + matches.keySet());
                     }
-                    resolveContent(project, jarFile, matches.values().iterator().next(),
+                    resolveContent(p, jarFile, matches.values().iterator().next(),
                             contentTransformer, consumer, name);
                 }
             }
@@ -359,5 +441,154 @@
         }
         return matches;
     }
+
+    private static class StubArtifactRepository implements ArtifactRepository, AutoCloseable {
+        private static final Random random = new Random();
+        private final File tempDir;
+        private final ArtifactRepositoryLayout layout;
+
+        public StubArtifactRepository() {
+            String tmpDir = System.getProperty("java.io.tmpdir", "/tmp");
+            this.tempDir = new File(tmpDir, "repo" + random.nextInt());
+            this.layout = new DefaultRepositoryLayout();
+        }
+
+        @Override
+        public ArtifactRepositoryLayout getLayout() {
+            return layout;
+        }
+
+        @Override
+        public String pathOf(Artifact artifact) {
+            return this.layout.pathOf(artifact);
+        }
+
+        @Override
+        public String getBasedir() {
+            return tempDir.toString();
+        }
+
+        @Override
+        public void close() throws IOException {
+            FileUtils.deleteDirectory(tempDir);
+
+        }
+
+        @Override
+        public String pathOfRemoteRepositoryMetadata(ArtifactMetadata artifactMetadata) {
+            return null;
+        }
+
+        @Override
+        public String pathOfLocalRepositoryMetadata(ArtifactMetadata artifactMetadata,
+                                                    ArtifactRepository artifactRepository) {
+            return null;
+        }
+
+        @Override
+        public String getUrl() {
+            return null;
+        }
+
+        @Override
+        public void setUrl(String s) {
+            // unused
+        }
+
+        @Override
+        public String getProtocol() {
+            return null;
+        }
+
+        @Override
+        public String getId() {
+            return "stub";
+        }
+
+        @Override
+        public void setId(String s) {
+            // unused
+        }
+
+        @Override
+        public ArtifactRepositoryPolicy getSnapshots() {
+            return null;
+        }
+
+        @Override
+        public void setSnapshotUpdatePolicy(ArtifactRepositoryPolicy artifactRepositoryPolicy) {
+            // unused
+        }
+
+        @Override
+        public ArtifactRepositoryPolicy getReleases() {
+            return null;
+        }
+
+        @Override
+        public void setReleaseUpdatePolicy(ArtifactRepositoryPolicy artifactRepositoryPolicy) {
+            // unused
+        }
+
+        @Override
+        public void setLayout(ArtifactRepositoryLayout artifactRepositoryLayout) {
+            // unused
+        }
+
+        @Override
+        public String getKey() {
+            return null;
+        }
+
+        @Override
+        public boolean isUniqueVersion() {
+            return false;
+        }
+
+        @Override
+        public boolean isBlacklisted() {
+            return false;
+        }
+
+        @Override
+        public void setBlacklisted(boolean b) {
+            // unused
+        }
+
+        @Override
+        public Artifact find(Artifact artifact) {
+            return null;
+        }
+
+        @Override
+        public List<String> findVersions(Artifact artifact) {
+            return Collections.emptyList();
+        }
+
+        @Override
+        public boolean isProjectAware() {
+            return false;
+        }
+
+        @Override
+        public void setAuthentication(Authentication authentication) {
+            // unused
+        }
+
+        @Override
+        public Authentication getAuthentication() {
+            return null;
+        }
+
+        @Override
+        public void setProxy(Proxy proxy) {
+            // unused
+        }
+
+        @Override
+        public Proxy getProxy() {
+            return null;
+        }
+    }
 }
 
diff --git a/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/LicenseMojo.java b/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/LicenseMojo.java
index 4363170..929b7d7 100644
--- a/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/LicenseMojo.java
+++ b/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/LicenseMojo.java
@@ -40,6 +40,7 @@
 import org.apache.hyracks.maven.license.project.Project;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.License;
 import org.apache.maven.model.Model;
 import org.apache.maven.plugin.AbstractMojo;
@@ -86,6 +87,12 @@
     @Component
     private ModelInheritanceAssembler assembler;
 
+    @Parameter( defaultValue = "${session}", required = true, readonly = true )
+    protected MavenSession session;
+
+    @Component
+    protected org.apache.maven.artifact.resolver.ArtifactResolver artifactResolver;
+
     @Parameter ( required = true )
     private String location;
 
@@ -192,6 +199,9 @@
                     urlToLicenseMap.put(alias ,license);
                 }
             }
+        } else if (license.getDisplayName() == null && spec.getDisplayName() != null) {
+            getLog().info("Propagating license name from " + project.gav() + ": " + spec.getDisplayName());
+            license.setDisplayName(spec.getDisplayName());
         }
         licenseUrl = license.getUrl();
         LicensedProjects entry = licenseMap.get(licenseUrl);
diff --git a/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/project/Project.java b/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/project/Project.java
index e5e57ad..80d4548 100644
--- a/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/project/Project.java
+++ b/hyracks-fullstack/hyracks/hyracks-maven-plugins/license-automation-plugin/src/main/java/org/apache/hyracks/maven/license/project/Project.java
@@ -19,7 +19,9 @@
 package org.apache.hyracks.maven.license.project;
 
 import java.io.File;
+import java.util.Arrays;
 import java.util.Comparator;
+import java.util.List;
 
 import org.apache.maven.project.MavenProject;
 
@@ -37,6 +39,7 @@
     private String artifactPath;
     private String noticeText;
     private String licenseText;
+    private String sourcePointer;
 
     @JsonIgnore
     private MavenProject mavenProject;
@@ -105,8 +108,9 @@
     }
 
     @JsonIgnore
-    public String [] getLocations() {
-        return getLocation().split(",");
+    public List<String> getLocations() {
+        // TODO(mblow): store locations as an set instead of string
+        return Arrays.asList(getLocation().split(","));
     }
 
     public void setArtifactId(String artifactId) {
@@ -156,4 +160,17 @@
     public void setLicenseText(String licenseText) {
         this.licenseText = licenseText;
     }
+
+    public String getSourcePointer() {
+        return sourcePointer;
+    }
+
+    public void setSourcePointer(String sourcePointer) {
+        this.sourcePointer = sourcePointer;
+    }
+
+    @Override
+    public String toString() {
+        return "Project [" + gav() + "]";
+    }
 }
