diff --git a/src/main/issuesFixed/css/batch.css b/issuesFixed/css/batch.css
similarity index 100%
rename from src/main/issuesFixed/css/batch.css
rename to issuesFixed/css/batch.css
diff --git a/src/main/issuesFixed/css/com.atlassian.auiplugin-aui-experimental-labels.css b/issuesFixed/css/com.atlassian.auiplugin-aui-experimental-labels.css
similarity index 100%
rename from src/main/issuesFixed/css/com.atlassian.auiplugin-aui-experimental-labels.css
rename to issuesFixed/css/com.atlassian.auiplugin-aui-experimental-labels.css
diff --git a/src/main/issuesFixed/css/jira.webresources-global-static.css b/issuesFixed/css/jira.webresources-global-static.css
similarity index 100%
rename from src/main/issuesFixed/css/jira.webresources-global-static.css
rename to issuesFixed/css/jira.webresources-global-static.css
diff --git a/src/main/issuesFixed/images/bug.png b/issuesFixed/images/bug.png
similarity index 100%
rename from src/main/issuesFixed/images/bug.png
rename to issuesFixed/images/bug.png
Binary files differ
diff --git a/src/main/issuesFixed/images/documentation.png b/issuesFixed/images/documentation.png
similarity index 100%
rename from src/main/issuesFixed/images/documentation.png
rename to issuesFixed/images/documentation.png
Binary files differ
diff --git a/src/main/issuesFixed/images/improvement.png b/issuesFixed/images/improvement.png
similarity index 100%
rename from src/main/issuesFixed/images/improvement.png
rename to issuesFixed/images/improvement.png
Binary files differ
diff --git a/src/main/issuesFixed/images/newfeature.png b/issuesFixed/images/newfeature.png
similarity index 100%
rename from src/main/issuesFixed/images/newfeature.png
rename to issuesFixed/images/newfeature.png
Binary files differ
diff --git a/src/main/issuesFixed/images/task.png b/issuesFixed/images/task.png
similarity index 100%
rename from src/main/issuesFixed/images/task.png
rename to issuesFixed/images/task.png
Binary files differ
diff --git a/src/main/issuesFixed/jira-report.html b/issuesFixed/jira-report.html
similarity index 100%
rename from src/main/issuesFixed/jira-report.html
rename to issuesFixed/jira-report.html
diff --git a/src/main/assembly/bin.xml b/src/main/assembly/bin.xml
index 21f6b66..8611d60 100644
--- a/src/main/assembly/bin.xml
+++ b/src/main/assembly/bin.xml
@@ -386,6 +386,7 @@
       <directory></directory>
       <outputDirectory></outputDirectory>
       <includes>
+        <include>issuesFixed/*</include>
         <include>README</include>
         <include>RELEASE_NOTES.html</include>
         <!-- Temporarily disable the include below for 1.1.0-Ducc release -->
@@ -404,12 +405,12 @@
      
     </fileSet>
 
-    <fileSet>
-      <directory>src/main/issuesFixed</directory>
+    <!--fileSet>
+      <directory>issuesFixed</directory>
       <outputDirectory>issuesFixed</outputDirectory>
       <fileMode>644</fileMode>
       <directoryMode>755</directoryMode>
-    </fileSet>
+    </fileSet-->
 
 
     <fileSet>
diff --git a/src/main/legal/LICENSE b/src/main/legal/LICENSE
index c2502d8..88689fa 100644
--- a/src/main/legal/LICENSE
+++ b/src/main/legal/LICENSE
@@ -376,7 +376,6 @@
        Applies to the class javax.xml.namespace.QName
 
 ===-The Apache Software License, Version 1.1 ======
-
 	(activemq) commons-codec-1.9.jar 
 	   BCEL 5.1
 	   Resolver
@@ -385,9 +384,7 @@
 	   Apache Commons Bean Utils
 	   Apache Commons Beans Collections
 
-
-
-===-http://creativecommons.org/licenses/publicdomain =============
+===- creativecommons.org public domain License =============
     xpp3-1.1.4c.jar  
 	  Applies to the XmlPull API 
   
@@ -425,28 +422,28 @@
    (webserver>navigation
    
 
-=== six-1.7.3-py2.py3-none-any.zip ===
+=== Benjamin Peterson License ===========
+    six-1.7.3-py2.py3-none-any.zip
 
-=== ST4-4.0.8.jar ====================
+=== Terence Parr License ================
+    ST4-4.0.8.jar 
 
 ===-ANTLR Runtime License ==========
    (cassandra) antlr-runtime-3.5.2.jar
 
-=== jLine License ==================
+=== Marc Prud'hommeaux License ==================
    (cassandra) jline-1.0.jar
 
-=== Futures License ==========
+=== Brian Quinlan License ==========
    (cassandra) futures-2.1.6-py2.py3-none-any.zip
 
 === XMLPull License ======================
-xmlpull-1.1.3.1.jar
+   xmlpull-1.1.3.1.jar
 
 
 ===-BSD Style License =============
    (cassandra) HdrHistogram-2.1.4.jar
-
    xstream-1.4.8.jar
-
    SVG Icons
    mina-core-1.1.7.jar
    
@@ -484,7 +481,7 @@
    jaxb-api 
    jaxb-impl   
  
-=== jBCrypt License ============================
+=== Damien Miller License ============================
    jbcrypt-0.3m.jar	  
 
 ===-Common Public License - v 1.0  =============
@@ -705,41 +702,6 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
 
-=====================================================
-
-====================================================================
-
-http://creativecommons.org/licenses/publicdomain
-
-The person or persons who have associated work with this document 
-(the "Dedicator" or "Certifier") hereby either (a) certifies that, to 
-the best of his knowledge, the work of authorship identified is in 
-the public domain of the country from which the work is published, 
-or (b) hereby dedicates whatever copyright the dedicators holds in 
-the work of authorship identified below (the "Work") to the public 
-domain. A certifier, moreover, dedicates any copyright interest he 
-may have in the associated work, and for these purposes, is described 
-as a "dedicator" below.
-
-A certifier has taken reasonable steps to verify the copyright status 
-of this work. Certifier recognizes that his good faith efforts may not 
-shield him from liability if in fact the work certified is not in the 
-public domain.
-
-Dedicator makes this dedication for the benefit of the public at large 
-and to the detriment of the Dedicator's heirs and successors. Dedicator 
-intends this dedication to be an overt act of relinquishment in perpetuity 
-of all present and future rights under copyright law, whether vested or 
-contingent, in the Work. Dedicator understands that such relinquishment of 
-all rights includes the relinquishment of all rights to enforce 
-(by lawsuit or otherwise) those copyrights in the Work.
-
-Dedicator recognizes that, once placed in the public domain, the Work 
-may be freely reproduced, distributed, transmitted, used, modified, built 
-upon, or otherwise exploited by anyone for any purpose, commercial 
-or non-commercial, and in any way, including by methods that have not 
-yet been invented or conceived.
-
 =====================================================================
 
 Indiana University Extreme! Lab Software License
@@ -806,11 +768,6 @@
 
 Creative Commons Attribution License v 2.5
 
-This project contains annotations derived from JCIP-ANNOTATIONS
-Copyright (c) 2005 Brian Goetz and Tim Peierls.
-See http://www.jcip.net and the Creative Commons Attribution License
-(http://creativecommons.org/licenses/by/2.5)
-
 License
 
 THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE 
@@ -2178,9 +2135,7 @@
 permission of its copyright owner.
 
 =========================================================================
-
-ANTLR 1989-2000 Developed by jGuru.com (MageLang Institute), 
-http://www.ANTLR.org  and http://www.jGuru.com
+ANTLR License
 
 We reserve no legal rights to the ANTLR--it is fully in the
 public domain. An individual or company may do whatever
@@ -4461,7 +4416,7 @@
 
 
 ========================================================================= 
-== The following products are licensed: MIT License
+== MIT License
 ========================================================================= *
 
 iso-relax, RelaxNG - Copyright (c)
@@ -4497,7 +4452,7 @@
  THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   
 ========================================================================= 
-== The following products are licensed: SVG Icons
+== BSD License (SVG Icons) 
 =========================================================================
 
 This product contains icons from the SVG Icons project.  The icons are licensed 
@@ -4534,7 +4489,7 @@
 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 ==========================================================================
-== The following products are licensed: ANTLR Runtime License
+== ANTLR Runtime License:
 ==========================================================================
 
 Copyright (c) 2003-2006 Terence Parr
@@ -4564,7 +4519,7 @@
 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 ==========================================================================
-== The following products are licensed: Futures
+== futures-2.1.6-py2.py3-none-any.zip is licensed:
 ==========================================================================
 Copyright 2009 Brian Quinlan. All rights reserved.
 
@@ -4589,7 +4544,7 @@
 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 ==========================================================================
-== The following products are licensed: jBCrypt
+== jbcrypt-0.3m.jar is licensed:
 ==========================================================================
 
  Copyright (c) 2006 Damien Miller <djm@mindrot.org>
@@ -4607,7 +4562,7 @@
  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
 ==========================================================================
-== The following products are licensed: jLine
+== jline-1.0.jar is licensed:
 ==========================================================================
 
 Copyright (c) 2002-2006, Marc Prud'hommeaux <mwp1@cornell.edu>
@@ -4645,7 +4600,7 @@
 
 
 ==========================================================================
-== The following products are licensed: six-1.7.3-py2.py3-none-any.zip
+== six-1.7.3-py2.py3-none-any.zip is licensed:
 ==========================================================================
 Copyright (c) 2010-2014 Benjamin Peterson
 
@@ -4667,7 +4622,7 @@
 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 ==========================================================================
-== The following products are licensed: ST4-4.0.8.jar
+== ST4-4.0.8.jar is licensed:
 ==========================================================================
 Copyright (c) 2003-2006 Terence Parr
 All rights reserved.
@@ -4696,7 +4651,7 @@
 THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 ==========================================================================
-== The following products are licensed: xmlpull
+== xmlpull is licensed:
 ==========================================================================
 
 
@@ -4743,7 +4698,7 @@
 three years from the date you acquired this Software product.
 
 =============================================================
-==== LICENSE.txt geronimo-servlet_3.0_spec-1.0.jar
+==== geronimo-servlet_3.0_spec-1.0.jar is licensed:
 =============================================================
 
 The XMLSchema.dtd included in this project was developed by the
@@ -4797,18 +4752,10 @@
 times remain with copyright holders.
 
 ============================================
+xpp3-1.1.4c.jar is licensed:
+============================================
 
-    From: commons-pool2-2.4.2.jar
-     APACHE COMMONS POOL DERIVATIVE WORKS:
-
-     The LinkedBlockingDeque implementation is based on an implementation written by
-     Doug Lea with assistance from members of JCP JSR-166 Expert Group and released
-     to the public domain, as explained at
-     http://creativecommons.org/licenses/publicdomain
-
-
-
-Public Domain License
+CreativeCommons.org Public Domain License
 
 The person or persons who have associated work with this document (the "Dedicator" or "Certifier") hereby ei\
 ther (a) certifies that, to the best of
diff --git a/src/main/legal/NOTICE b/src/main/legal/NOTICE
index 3764e27..0d59817 100644
--- a/src/main/legal/NOTICE
+++ b/src/main/legal/NOTICE
@@ -249,6 +249,16 @@
 --------------------------------------------------------------------------------
 
 =========================================================================
+------------------ Jetty (jetty-util) Notice
+
+The UnixCrypt.java code implements the one way cryptography used by
+Unix systems for simple password protection.  Copyright 1996 Aki Yoshida,
+modified April 2001  by Iris Van den Broeke, Daniel Deville.
+Permission to use, copy, modify and distribute UnixCrypt
+for non-commercial or commercial purposes and without fee is
+granted provided that the copyright notice appears in all copies.
+
+=========================================================================
 ------------------- www.ibatis.com Notice -------
 =========================================================================
 This product also includes software developed by
@@ -421,14 +431,12 @@
 
 (C) Copyright IBM Corp. 2003. 
 
-=========================================================================
-==  XMLBeans Notice                                                      ==
-=========================================================================
+-------------------- xmlbean library Notice
 
-This product includes Apache XMLBeans software, developed at the Apache Software
-Foundation (http://www.apache.org/). From binary distribution of XMLBeans NOTICE
-file:
-Portions of this software were originally based on the following:
+   This product includes software developed by
+   The Apache Software Foundation (http://www.apache.org/).
+
+   Portions of this software were originally based on the following:
      - software copyright (c) 2000-2003, BEA Systems, <http://www.bea.com/>.
 
    Aside from contributions to the Apache XMLBeans project, this
@@ -441,5 +449,14 @@
       Consortium (Massachusetts Institute of Technology, European Research
       Consortium for Informatics and Mathematics, Keio University)
 
+    - resolver.jar from Apache Xml Commons project,
+      Copyright (c) 2001-2003 Apache Software Foundation
+
+    - Piccolo XML Parser for Java from http://piccolo.sourceforge.net/,
+      Copyright 2002 Yuval Oren under the terms of the Apache Software License 2.0
+
+    - JSR-173 Streaming API for XML from http://sourceforge.net/projects/xmlpullparser/,
+      Copyright 2005 BEA under the terms of the Apache Software License 2.0
+
 =========================================================================
 
diff --git a/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccPropertiesResolver.java b/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccPropertiesResolver.java
index 26a3298..368a45f 100644
--- a/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccPropertiesResolver.java
+++ b/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccPropertiesResolver.java
@@ -168,7 +168,7 @@
     
     public static final String ducc_transport_trace = "ducc.transport.trace";
     
-    public static final String ducc_ws_port_https = "ducc.ws.port.https";
+    public static final String ducc_ws_port_ssl = "ducc.ws.port.ssl";
     public static final String ducc_ws_idle_timeout = "ducc.ws.idle.timeout";
     public static final String ducc_ws_max_threads = "ducc.ws.max.threads";
 
diff --git a/uima-ducc-duccdocs/pom.xml b/uima-ducc-duccdocs/pom.xml
index 054d961..8355922 100644
--- a/uima-ducc-duccdocs/pom.xml
+++ b/uima-ducc-duccdocs/pom.xml
@@ -22,6 +22,7 @@
 	</parent>
 
     <artifactId>uima-ducc-duccdocs</artifactId>
+    <name>${uima.ducc} ${project.artifactId}</name>
     <packaging>pom</packaging>
 
  <!-- Special inheritance note even though the <scm> element that follows 
diff --git a/uima-ducc-duccdocs/src/site/tex/duccbook/part4/admin/admin-commands.tex b/uima-ducc-duccdocs/src/site/tex/duccbook/part4/admin/admin-commands.tex
index 9f67260..4147242 100644
--- a/uima-ducc-duccdocs/src/site/tex/duccbook/part4/admin/admin-commands.tex
+++ b/uima-ducc-duccdocs/src/site/tex/duccbook/part4/admin/admin-commands.tex
@@ -349,8 +349,8 @@
           \item Rebuilds the non-privileged ducc\_ling.
         \end{enumerate}
 
-        The site-specific customized files (i.e. those holding node and class definitions,
-        passwords etc.) are left in place, 
+        The site-specific files, those holding customizations such as node and class definitions
+        as well as logs and job history, are left in place, 
         while all replaced files are archived under a folder called {\em ducc\_archives} 
         so the previous installation can be restored if necessary.
 
diff --git a/uima-ducc-duccdocs/src/site/tex/duccbook/part4/install.tex b/uima-ducc-duccdocs/src/site/tex/duccbook/part4/install.tex
index 61dffc8..e80fe37 100644
--- a/uima-ducc-duccdocs/src/site/tex/duccbook/part4/install.tex
+++ b/uima-ducc-duccdocs/src/site/tex/duccbook/part4/install.tex
@@ -27,7 +27,8 @@
       
     \item Optionally add more nodes. 
       
-    \item Enable multiple-user support - processes run with the credentials of the submitting user.
+    \item Enable multiple-user support - processes run with the credentials of the submitting user,
+      while DUCC runs as user {\em ducc}.
       This step requires root authority on one or more machines.
       
     \item Enable CGroup containers. This step requires root authority on every DUCC machine.
@@ -35,11 +36,21 @@
 
 When upgrading from an existing installation the {\em ducc\_update} script may be used
 to replace the system files while leaving the site-specific configuration files in place. 
-See more info at
+For more information see
 \ifdefined\DUCCSTANDALONE
-{\em ``ducc\_update''} in the duccbook. 
+{\em ``ducc\_update''} in the Administrative Commands section of the DuccBook. 
 \else
-\hyperref[subsec:admin.ducc-update] {ducc\_update}. 
+\hyperref[subsec:admin.ducc-update] {\em ducc\_update}. 
+\fi
+
+Since with this release the persistence data about completed work is stored in a database, 
+additional upgrade steps are required to convert the older file-based data in order to preserve information 
+about past work. 
+For more information see
+\ifdefined\DUCCSTANDALONE
+{\em ``db\_create''} and {\em ``db\_loader''} in the Administrative Commands section of the DuccBook. 
+\else
+\hyperref[subsec:admin.db-create] {\em db\_create} and \hyperref[subsec:admin.db-loader] {\em db\_loader}. 
 \fi
 
 
@@ -58,6 +69,7 @@
 
 \begin{itemize}
   \item Reasonably current Linux.  DUCC has been tested on SLES 11, RHEL 6 \& 7, and Ubuntu 14.04 
+    with 64-bit Intel, IBM Power (Big and Little Endian) hardware.
     
     {\em Note:} On some systems the default {\em user limits}
     for max user processes (ulimit -u) and nfiles (ulimit -n) are defined too
@@ -159,10 +171,10 @@
 
 \section{Single System Installation and Verification}
 
-Although any user ID can be used to run DUCC, it is recommended to create user ``ducc''
-to later enable use of cgroups as well as running processes with the credentials of the submitting user.
+Although any user ID can be used to run a single-system DUCC, creating a ``ducc'' userid is recommended
+to enable the later use of cgroups as well as running processes with the credentials of the submitting user.
 
-If multiple nodes are going to be added later, it is recommended to install the ducc runtime tree
+If multiple nodes are going to be added later, the ducc runtime tree should be installed
 on a shared filesystem so that it can be mounted on the additional nodes.
 
 Verification submits a very simple UIMA pipeline for execution under DUCC.  Once this is shown to be
@@ -171,7 +183,7 @@
 
 \section{Minimal Hardware Requirements for Single System Installation}
 \begin{itemize}
-    \item One Intel-based or IBM Power-based system.  (More systems may be added later.)
+    \item One Intel-based or IBM Power-based system (Big or Little Endian).  (More systems may be added later.)
 
     \item 8GB of memory.  16GB or more is preferable for developing and testing applications beyond
       the non-trivial.  
@@ -419,9 +431,9 @@
 
 If a different location is chosen for ducc\_ling the new path needs to be specified 
 for ducc.agent.launcher.ducc\_spawn\_path in \$DUCC\_HOME/resources/site.ducc.properties.
-See more info at
+For more information see
 \ifdefined\DUCCSTANDALONE
-{\em ``Properties merging''} in the duccbook. 
+{\em ``Properties merging''} in the DuccBook. 
 \else
 \hyperref[sec:admin.properties-merge] {Properties merging}. 
 \fi
@@ -457,14 +469,14 @@
    # Mount cgroups for older OS (e.g. RHEL v6)
    # For newer OS, remove entire mount block 
    mount {
-#      cpuset = /cgroup/cpuset;
+      cpuset = /cgroup/cpuset;
       cpu = /cgroup/cpu;
-#      cpuacct = /cgroup/cpuacct;
+      cpuacct = /cgroup/cpuacct;
       memory = /cgroup/memory;
-#      devices = /cgroup/devices;
-#      freezer = /cgroup/freezer;
-#      net_cls = /cgroup/net_cls;
-#      blkio = /cgroup/blkio;
+      devices = /cgroup/devices;
+      freezer = /cgroup/freezer;
+      net_cls = /cgroup/net_cls;
+      blkio = /cgroup/blkio;
    }
    # Define cgroup ducc and setup permissions
    group ducc {
@@ -500,13 +512,13 @@
   	attempt to use the feature. CGroups can also be disabled for all machines
    	(see 
    \ifdefined\DUCCSTANDALONE
-   {\em ducc.agent.launcher.cgroups.enable} in ducc.properties, described in the Duccbook.)
+   {\em ducc.agent.launcher.cgroups.enable} in ducc.properties, described in the DuccBook.)
    \else
    \hyperref[itm:props-agent.cgroups.enable] {\em ducc.agent.launcher.cgroups.enable}) 
    \fi
    	or it can be disabled for individual machines (see 
    \ifdefined\DUCCSTANDALONE
-   {\em ducc.agent.exclusion.file} in ducc.properties, described in the Duccbook.)
+   {\em ducc.agent.exclusion.file} in ducc.properties, described in the DuccBook.)
    \else
    \hyperref[itm:props-agent.cgroups.exclusion]{\em ducc.agent.exclusion.file}).
    \fi
diff --git a/uima-ducc-parent/pom.xml b/uima-ducc-parent/pom.xml
index bdb6f0f..10c6763 100644
--- a/uima-ducc-parent/pom.xml
+++ b/uima-ducc-parent/pom.xml
@@ -29,6 +29,7 @@
 
 	<artifactId>uima-ducc-parent</artifactId>
 	<version>2.1.0</version>
+        <name>${uima.ducc} ${project.artifactId}</name>
 	<packaging>pom</packaging>
 	<!-- Add project inception year. This is used by javadoc plugin   -->
 	<!-- also used when generating NOTICE file for DUCC's jars -->
diff --git a/uima-ducc-spawn/pom.xml b/uima-ducc-spawn/pom.xml
index bdc7f15..e99582c 100644
--- a/uima-ducc-spawn/pom.xml
+++ b/uima-ducc-spawn/pom.xml
@@ -20,6 +20,7 @@
 	</parent>
   
     <artifactId>uima-ducc-spawn</artifactId>
+    <name>${uima.ducc} ${project.artifactId}</name>
     <packaging>pom</packaging>
 
  <!-- Special inheritance note even though the <scm> element that follows 
diff --git a/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccWebServer.java b/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccWebServer.java
index cb82cc5..6999ff9 100644
--- a/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccWebServer.java
+++ b/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccWebServer.java
@@ -125,7 +125,7 @@
 	}
 	
 	public int getPortSsl() {
-		String property = DuccPropertiesResolver.get(DuccPropertiesResolver.ducc_ws_port_https);
+		String property = DuccPropertiesResolver.get(DuccPropertiesResolver.ducc_ws_port_ssl);
         int portHttps = ConfigValue.PortHttps.getInt(property);
         return portHttps;
 	}
@@ -173,9 +173,9 @@
 
         /**                                                                                                                                                        
           * Determine server https port                                                                                                                             
-          * ducc.ws.port.https                                                                                                                                      
+          * ducc.ws.port.ssl                                                                                                                                      
           */
-        property = DuccPropertiesResolver.get(DuccPropertiesResolver.ducc_ws_port_https);
+        property = DuccPropertiesResolver.get(DuccPropertiesResolver.ducc_ws_port_ssl);
         int portHttps = ConfigValue.PortHttps.getInt(property);
 
         try {
