diff --git a/asterix-server/src/main/licenses/NOTICE b/asterix-server/src/main/licenses/NOTICE
new file mode 100644
index 0000000..7c12f0c
--- /dev/null
+++ b/asterix-server/src/main/licenses/NOTICE
@@ -0,0 +1,403 @@
+Apache AsterixDB
+Copyright 2016 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+AsterixDB utilizes many libraries, which come with the following applicable NOTICE(s):
+
+ - repo/algebricks-common-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+algebricks-common
+Copyright 2016 The Apache Software Foundation
+
+ - repo/algebricks-compiler-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+algebricks-compiler
+Copyright 2016 The Apache Software Foundation
+
+ - repo/algebricks-core-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+algebricks-core
+Copyright 2016 The Apache Software Foundation
+
+ - repo/algebricks-data-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+algebricks-data
+Copyright 2016 The Apache Software Foundation
+
+ - repo/algebricks-rewriter-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+algebricks-rewriter
+Copyright 2016 The Apache Software Foundation
+
+ - repo/algebricks-runtime-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+algebricks-runtime
+Copyright 2016 The Apache Software Foundation
+
+ - repo/asterix-algebra-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+asterix-algebra
+Copyright 2016 The Apache Software Foundation
+
+ - repo/asterix-app-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+asterix-app
+Copyright 2016 The Apache Software Foundation
+
+ - repo/asterix-aql-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+asterix-aql
+Copyright 2016 The Apache Software Foundation
+
+ - repo/asterix-common-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+asterix-common
+Copyright 2016 The Apache Software Foundation
+
+ - repo/asterix-events-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+asterix-events
+Copyright 2016 The Apache Software Foundation
+
+ - repo/asterix-external-data-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+asterix-external-data
+Copyright 2016 The Apache Software Foundation
+
+ - repo/asterix-fuzzyjoin-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+asterix-fuzzyjoin
+Copyright 2016 The Apache Software Foundation
+
+ - repo/asterix-metadata-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+asterix-metadata
+Copyright 2016 The Apache Software Foundation
+
+ - repo/asterix-om-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+asterix-om
+Copyright 2016 The Apache Software Foundation
+
+ - repo/asterix-runtime-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+asterix-runtime
+Copyright 2016 The Apache Software Foundation
+
+ - repo/asterix-server-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+asterix-server
+Copyright 2016 The Apache Software Foundation
+
+ - repo/asterix-tools-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+asterix-tools
+Copyright 2016 The Apache Software Foundation
+
+ - repo/asterix-transactions-0.8.8-SNAPSHOT.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+asterix-transactions
+Copyright 2016 The Apache Software Foundation
+
+ - repo/avro-1.7.4.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+Apache Avro
+Copyright 2009-2013 The Apache Software Foundation
+
+ - repo/commons-logging-1.1.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+Commons Logging
+Copyright 2001-2007 The Apache Software Foundation
+
+ - repo/derby-10.10.1.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+Apache Derby
+Copyright 2004-2013 The Apache Software Foundation
+
+=========================================================================
+
+Portions of Derby were originally developed by
+International Business Machines Corporation and are
+licensed to the Apache Software Foundation under the
+"Software Grant and Corporate Contribution License Agreement",
+informally known as the "Derby CLA".
+The following copyright notice(s) were affixed to portions of the code
+with which this file is now or was at one time distributed
+and are placed here unaltered.
+
+(C) Copyright 1997,2004 International Business Machines Corporation.  All rights reserved.
+
+(C) Copyright IBM Corp. 2003. 
+
+
+=========================================================================
+
+
+The JDBC apis for small devices and JDBC3 (under java/stubs/jsr169 and
+java/stubs/jdbc3) were produced by trimming sources supplied by the
+Apache Harmony project. In addition, the Harmony SerialBlob and
+SerialClob implementations are used. The following notice covers the Harmony sources:
+
+Portions of Harmony were originally developed by
+Intel Corporation and are licensed to the Apache Software
+Foundation under the "Software Grant and Corporate Contribution
+License Agreement", informally known as the "Intel Harmony CLA".
+
+
+ - repo/guice-3.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+Google Guice - Core Library
+Copyright 2006-2011 Google, Inc.
+
+ - repo/guice-servlet-3.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+Google Guice - Extensions - Servlet
+Copyright 2006-2011 Google, Inc.
+
+ - repo/hive-ant-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+Hive Ant Utilities
+Copyright 2014 The Apache Software Foundation
+
+ - repo/hive-common-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+Hive Common
+Copyright 2014 The Apache Software Foundation
+
+ - repo/hive-exec-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+Hive Query Language
+Copyright 2014 The Apache Software Foundation
+
+ - repo/hive-metastore-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+Hive Metastore
+Copyright 2014 The Apache Software Foundation
+
+ - repo/hive-serde-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+Hive Serde
+Copyright 2014 The Apache Software Foundation
+
+ - repo/hive-shims-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+Hive Shims
+Copyright 2014 The Apache Software Foundation
+
+ - repo/hive-shims-0.20-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+Hive Shims 0.20
+Copyright 2014 The Apache Software Foundation
+
+ - repo/hive-shims-0.20S-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+Hive Shims 0.20S
+Copyright 2014 The Apache Software Foundation
+
+ - repo/hive-shims-0.23-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+Hive Shims 0.23
+Copyright 2014 The Apache Software Foundation
+
+ - repo/hive-shims-common-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+Hive Shims Common
+Copyright 2014 The Apache Software Foundation
+
+ - repo/hive-shims-common-secure-0.13.0.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+Hive Shims Secure Common
+Copyright 2014 The Apache Software Foundation
+
+ - repo/hyracks-api-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+hyracks-api
+Copyright 2016 The Apache Software Foundation
+
+ - repo/hyracks-client-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+hyracks-client
+Copyright 2016 The Apache Software Foundation
+
+ - repo/hyracks-comm-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+hyracks-comm
+Copyright 2016 The Apache Software Foundation
+
+ - repo/hyracks-control-cc-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+hyracks-control-cc
+Copyright 2016 The Apache Software Foundation
+
+ - repo/hyracks-control-common-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+hyracks-control-common
+Copyright 2016 The Apache Software Foundation
+
+ - repo/hyracks-control-nc-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+hyracks-control-nc
+Copyright 2016 The Apache Software Foundation
+
+ - repo/hyracks-dataflow-common-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+hyracks-dataflow-common
+Copyright 2016 The Apache Software Foundation
+
+ - repo/hyracks-dataflow-std-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+hyracks-dataflow-std
+Copyright 2016 The Apache Software Foundation
+
+ - repo/hyracks-data-std-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+hyracks-data-std
+Copyright 2016 The Apache Software Foundation
+
+ - repo/hyracks-hdfs-2.x-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+hyracks-hdfs-2.x
+Copyright 2016 The Apache Software Foundation
+
+ - repo/hyracks-hdfs-core-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+hyracks-hdfs-core
+Copyright 2016 The Apache Software Foundation
+
+ - repo/hyracks-ipc-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+hyracks-ipc
+Copyright 2016 The Apache Software Foundation
+
+ - repo/hyracks-net-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+hyracks-net
+Copyright 2016 The Apache Software Foundation
+
+ - repo/hyracks-storage-am-bloomfilter-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+hyracks-storage-am-bloomfilter
+Copyright 2016 The Apache Software Foundation
+
+ - repo/hyracks-storage-am-btree-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+hyracks-storage-am-btree
+Copyright 2016 The Apache Software Foundation
+
+ - repo/hyracks-storage-am-common-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+hyracks-storage-am-common
+Copyright 2016 The Apache Software Foundation
+
+ - repo/hyracks-storage-am-lsm-btree-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+hyracks-storage-am-lsm-btree
+Copyright 2016 The Apache Software Foundation
+
+ - repo/hyracks-storage-am-lsm-common-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+hyracks-storage-am-lsm-common
+Copyright 2016 The Apache Software Foundation
+
+ - repo/hyracks-storage-am-lsm-invertedindex-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+hyracks-storage-am-lsm-invertedindex
+Copyright 2016 The Apache Software Foundation
+
+ - repo/hyracks-storage-am-lsm-rtree-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+hyracks-storage-am-lsm-rtree
+Copyright 2016 The Apache Software Foundation
+
+ - repo/hyracks-storage-am-rtree-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+hyracks-storage-am-rtree
+Copyright 2016 The Apache Software Foundation
+
+ - repo/hyracks-storage-common-0.2.17-incubating.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+hyracks-storage-common
+Copyright 2016 The Apache Software Foundation
+
+ - repo/plexus-utils-3.0.7.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+This product includes software developed by the Indiana University 
+  Extreme! Lab (http://www.extreme.indiana.edu/)
+
+This product includes software developed by
+ThoughtWorks (http://www.thoughtworks.com).
+
+This product includes software developed by
+javolution (http://javolution.org/).
+
+This product includes software developed by
+Rome (https://rome.dev.java.net/).
+
+- repo/velocity-1.5.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+Apache Velocity
+
+Copyright (C) 2000-2007 The Apache Software Foundation
+
+ - repo/wicket-core-1.5.2.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+   Apache Wicket
+   Copyright 2006-2011 Apache Software Foundation
+
+   This product includes software from QOS.ch (http://slf4j.org) licensed under the X11 license
+   Copyright (c) 2004-2008 QOS.ch
+
+   Contains Diff library from Mavens JRCS, released under
+   The Apache Software License, Version 1.1.
+   (c) 1999-2003
+
+   org.apache.wicket.markup.html.form.upload.MultiFileUploadField.js is taken from [1]
+   and has the following notice:
+      "Licence:
+       Use this however/wherever you like, just don't blame me if it breaks
+       anything.
+
+       Credit:
+       If you're nice, you'll leave this bit:
+
+       Class by Stickman -- http://www.the-stickman.com
+       with thanks to:
+       [for Safari fixes]
+          Luis Torrefranca -- http://www.law.pitt.edu
+          and
+          Shawn Parker & John Pennypacker -- http://www.fuzzycoconut.com
+       [for duplicate name bug]
+          'neal'"
+   [1]: http://the-stickman.com/web-development/javascript/upload-multiple-files-with-a-single-file-element/
+ - repo/wicket-request-1.5.2.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+Wicket Request
+Copyright 2006-2011 Apache Software Foundation
+
+ - repo/wicket-util-1.5.2.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+Wicket Util
+Copyright 2006-2011 Apache Software Foundation
+
+ - repo/xercesImpl-2.9.1.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+   Apache Xerces Java
+   Copyright 1999-2007 The Apache Software Foundation
+
+   Portions of this software were originally based on the following:
+     - software copyright (c) 1999, IBM Corporation., http://www.ibm.com.
+     - software copyright (c) 1999, Sun Microsystems., http://www.sun.com.
+     - voluntary contributions made by Paul Eng on behalf of the 
+       Apache Software Foundation that were originally developed at iClick, Inc.,
+       software copyright (c) 1999.
+
+ - repo/xml-apis-1.3.04.jar in asterix/asterix-server-0.8.8-binary-assembly.zip
+
+   Apache XML Commons XML APIs
+   Copyright 2006 The Apache Software Foundation.
+
+
+   Portions of this software were originally based on the following:
+     - software copyright (c) 1999, IBM Corporation., http://www.ibm.com.
+     - software copyright (c) 1999, Sun Microsystems., http://www.sun.com.
+     - software copyright (c) 2000 World Wide Web Consortium, http://www.w3.org
