diff --git a/doc/Installation/DataManagementSplitSystemSetup.md b/doc/Installation/DataManagementSplitSystemSetup.md
index 06e7b399e2dfbda419de0f4c63a17f3b5b1352f2..766521716309058734b065960542ee4efd17f3ae 100644
--- a/doc/Installation/DataManagementSplitSystemSetup.md
+++ b/doc/Installation/DataManagementSplitSystemSetup.md
@@ -106,7 +106,7 @@ This node will be responsible for providing the data storage web service, the po
 To install _dm_ compnents for the data-storage node 
  * cd DM\_INSTALL\_DIR/production
  * edit etc/dm.deploy.conf to change DM\_CA\_HOST to data-storage
- * ./sbin/install\_dm\_deploy\_data\_storage.sh
+ * ./sbin/dm\_deploy\_data\_storage.sh
    - This deploy process will install components and prompt for user input as necessary.  Prompts will ask for a number of system passwords, some existing and some being set by this process, node names for the DS web service node and file locations.  These include
      - __postgres__ admin account - This will be used to manage the postgres itself.  Each developer can set this to a unique value.
      - __dm__ db management account - This will be for mananging the 'dm' database in postgres.  Each developer can set this to a unique value.
@@ -121,7 +121,7 @@ This node will provide _daq_, _proc_ and _cat_ web services.  These services wil
 To install _dm_ components on the exp-station:
  * cd DM\_INSTALL\_DIR/production
  * Edit the file etc/dm.deploy.conf to ensure that the DM\_CA\_HOST is set to the data-storage node.
- * ./sbin/install\_dm\_deploy\_exp\_station.sh
+ * ./sbin/dm\_deploy\_exp\_station.sh
   - This will start the installation process which will prompt for 
      - DM DS Web Service Host (data-storage in this case
      - DM DS Web Servervice Installation directory (where the web service is installed on node data-storage)
@@ -194,11 +194,11 @@ Each step in a workflow can define inputs and outputs which can then be used in
 If needed the test system can be restarted running a couple of startup commands.  Change directory the DM install directory and then
 
  * data-storage
+    * DM\_INSTALL\_DIR/production/etc/init.d/dm-db-services restart
     * DM\_INSTALL\_DIR/production/etc/init.d/dm-ds-services restart
-    * DM\_INSTALL\_DIR/production/etc/init.d/dm-monitor-services restart
  * exp-station
-    * DM\_INSTALL\_DIR/production/etc/init.d/dm-db-services restart
     * DM\_INSTALL\_DIR/production/etc/init.d/dm-daq-services restart
+    * DM\_INSTALL\_DIR/production/etc/init.d/dm-monitor-services restart
  
 This may be necessary if, for instance, the system has been rebooted.  These commands restart several services in the install directory.  If you have modified something in only one of these services you may be able to restart that service.  For instance if only the data storage web service needs to be rebooted then you can run
 
diff --git a/doc/RELEASE_NOTES.txt b/doc/RELEASE_NOTES.txt
index 568f1d39a28bd34fd01dce41e1c7a4461478b99c..822883e99a8966c5dddedab2e2fb1fe7f2aec973 100644
--- a/doc/RELEASE_NOTES.txt
+++ b/doc/RELEASE_NOTES.txt
@@ -1,3 +1,9 @@
+Release 3.3.0 (05/04/2020)
+- Change log4j version from 1.2.7 to 2.13.2.  Code changes to adapt were
+   necessary.  Changed config file from log4j.properties to log4j2.xml
+- change jar file for postgresql from 9.3-1102.jdbc41 to 42.2.8.  The underlying 
+    postgresql in support changed from 9.3 to 9.6 a while ago.
+
 Release 3.2.2 (02/24/2020)
 =============================
 - Added user documentation (Getting Started guide)
diff --git a/etc/dm.deploy.conf b/etc/dm.deploy.conf
index 6ba7ee6fcf39da01395e7fefb908fa2291be2104..449d09dbadfeddc413f87529fda222448028ef53 100644
--- a/etc/dm.deploy.conf
+++ b/etc/dm.deploy.conf
@@ -14,7 +14,7 @@ DM_DAQ_WEB_SERVICE_URL=https://DM_HOSTNAME:33336
 DM_CAT_WEB_SERVICE_URL=https://DM_HOSTNAME:44436
 DM_PROC_WEB_SERVICE_URL=https://DM_HOSTNAME:55536
 DM_APS_DB_WEB_SERVICE_URL=https://DM_HOSTNAME:11236
-DM_SOFTWARE_VERSION=3.2.2
+DM_SOFTWARE_VERSION=3.3.0
 LDAP_SERVER_URL='ldaps://dmid-vm.xray.aps.anl.gov:636'
 LDAP_DN_FORMAT='uid=%%s,ou=people,o=aps.anl.gov,dc=aps,dc=anl,dc=gov'
 LDAP_UTIL_ADMIN_DN='uid=DM_SYSTEM_UNIX_ACCOUNT,ou=People,o=aps.anl.gov,dc=aps,dc=anl,dc=gov'
diff --git a/etc/dm_dev.deploy.conf b/etc/dm_dev.deploy.conf
index 15f126ed5bcf0ff844b8e9d86c0e0b48238f132e..7cb319dacb26a94c24691e9c0692fb406e3e36a7 100644
--- a/etc/dm_dev.deploy.conf
+++ b/etc/dm_dev.deploy.conf
@@ -14,7 +14,7 @@ DM_DAQ_WEB_SERVICE_URL=https://DM_HOSTNAME:33336
 DM_CAT_WEB_SERVICE_URL=https://DM_HOSTNAME:44436
 DM_PROC_WEB_SERVICE_URL=https://DM_HOSTNAME:55536
 DM_APS_DB_WEB_SERVICE_URL=https://DM_HOSTNAME:11236
-DM_SOFTWARE_VERSION=2.2.2
+DM_SOFTWARE_VERSION=3.3.0
 LDAP_SERVER_URL='ldaps://dmid-vm.xray.aps.anl.gov:636'
 LDAP_DN_FORMAT='uid=%%s,ou=people,o=aps.anl.gov,dc=aps,dc=anl,dc=gov'
 LDAP_UTIL_ADMIN_DN='uid=DM_SYSTEM_UNIX_ACCOUNT,ou=People,o=aps.anl.gov,dc=aps,dc=anl,dc=gov'
diff --git a/src/java/DmApi/nbproject/project.properties b/src/java/DmApi/nbproject/project.properties
index 77f353b4d8680e877ad5a905c3e808c855525171..223abeafa3953a5819f45c369157ce8fcf2c481e 100644
--- a/src/java/DmApi/nbproject/project.properties
+++ b/src/java/DmApi/nbproject/project.properties
@@ -29,12 +29,14 @@ dist.jar=${dist.dir}/dm-api.jar
 dist.javadoc.dir=${dist.dir}/javadoc
 endorsed.classpath=
 excludes=
-file.reference.log4j-1.2.17.jar=../lib/log4j-1.2.17.jar
+file.reference.log4j-core-2.13.2.jar=../lib/log4j-core-2.13.2.jar
+file.reference.log4j-api-2.13.2.jar=../lib/log4j-api-2.13.2.jar
 includes=**
 jar.compress=false
 javac.classpath=\
     ${reference.DmBase.jar}:\
-    ${file.reference.log4j-1.2.17.jar}
+    ${file.reference.log4j-core-2.13.2.jar}:\
+    ${file.reference.log4j-api-2.13.2.jar}
 # Space-separated list of extra javac options
 javac.compilerargs=
 javac.deprecation=false
diff --git a/src/java/DmApi/src/java/gov/anl/aps/dm/api/DmRestApi.java b/src/java/DmApi/src/java/gov/anl/aps/dm/api/DmRestApi.java
index 1564fcaef66ccc567a78821e88b04288a673f946..18755a11a91d19d92a9e81a766c172a95829ba28 100644
--- a/src/java/DmApi/src/java/gov/anl/aps/dm/api/DmRestApi.java
+++ b/src/java/DmApi/src/java/gov/anl/aps/dm/api/DmRestApi.java
@@ -29,7 +29,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import javax.net.ssl.HttpsURLConnection;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * DM REST Web Service API class.
@@ -49,7 +50,7 @@ public class DmRestApi {
     private static final String DefaultSessionId = "defaultSession";
 
     private static final boolean httpsInitialized = initializeHttpsConnection();    
-    private static final Logger logger = Logger.getLogger(DmRestApi.class.getName());
+    private static final Logger logger = LogManager.getLogger(DmRestApi.class.getName());
 
     private static boolean initializeHttpsConnection() {
         HttpsURLConnection.setDefaultSSLSocketFactory(new NoServerVerificationSSLSocketFactory());
diff --git a/src/java/DmBase/nbproject/project.properties b/src/java/DmBase/nbproject/project.properties
index de53d1bbf4f4a75812538496b465b08a7f7c7070..7b3adbdc40485c3f4e8039a656f2b35d2265a42a 100644
--- a/src/java/DmBase/nbproject/project.properties
+++ b/src/java/DmBase/nbproject/project.properties
@@ -30,14 +30,16 @@ dist.javadoc.dir=${dist.dir}/javadoc
 endorsed.classpath=
 excludes=
 file.reference.gson-2.3.1.jar=../lib/gson-2.3.1.jar
-file.reference.log4j-1.2.17.jar=../lib/log4j-1.2.17.jar
+file.reference.log4j-core-2.13.2.jar=../lib/log4j-core-2.13.2.jar
+file.reference.log4j-api-2.13.2.jar=../lib/log4j-api-2.13.2.jar
 file.reference.primefaces-6.0.jar=../lib/primefaces-6.0.jar
 file.reference.jaxb-osgi.jar=/local/DataManagement/support/opt/payara/glassfish/modules/jaxb-osgi.jar
 file.reference.jaxb-api-2.3.1.jar=../lib/jaxb-api-2.3.1.jar
 includes=**
 jar.compress=false
 javac.classpath=\
-    ${file.reference.log4j-1.2.17.jar}:\
+    ${file.reference.log4j-core-2.13.2.jar}:\
+    ${file.reference.log4j-api-2.13.2.jar}:\
     ${file.reference.gson-2.3.1.jar}:\
     ${file.reference.primefaces-6.0.jar}:\
     ${file.reference.jaxb-api-2.3.1.jar}:\
diff --git a/src/java/DmBase/src/java/gov/anl/aps/dm/common/exceptions/DmExceptionFactory.java b/src/java/DmBase/src/java/gov/anl/aps/dm/common/exceptions/DmExceptionFactory.java
index d067c3a7cc389f9051f091ef1fe45a801a5cc1b5..bff7e729a157f7496b941d39bff011647702a098 100644
--- a/src/java/DmBase/src/java/gov/anl/aps/dm/common/exceptions/DmExceptionFactory.java
+++ b/src/java/DmBase/src/java/gov/anl/aps/dm/common/exceptions/DmExceptionFactory.java
@@ -1,7 +1,8 @@
 package gov.anl.aps.dm.common.exceptions;
 
 import gov.anl.aps.dm.common.constants.DmStatus;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * DM exception factory class.
@@ -10,7 +11,7 @@ import org.apache.log4j.Logger;
 public class DmExceptionFactory {
 
     private static final Logger logger
-            = Logger.getLogger(DmExceptionFactory.class.getName());
+            = LogManager.getLogger(DmExceptionFactory.class.getName());
 
     /**
      * Generate DM exception.
diff --git a/src/java/DmBase/src/java/gov/anl/aps/dm/common/objects/DmObjectFactory.java b/src/java/DmBase/src/java/gov/anl/aps/dm/common/objects/DmObjectFactory.java
index f003a16daf5872ef033e473d4961713e3984bad5..188a69aa8b77d62e890cab19b7f6ae8248d2c3c7 100644
--- a/src/java/DmBase/src/java/gov/anl/aps/dm/common/objects/DmObjectFactory.java
+++ b/src/java/DmBase/src/java/gov/anl/aps/dm/common/objects/DmObjectFactory.java
@@ -7,14 +7,15 @@ import gov.anl.aps.dm.common.exceptions.DmException;
 import java.lang.reflect.Type;
 import java.util.LinkedList;
 import java.util.List;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * DM object factory class.
  */
 public class DmObjectFactory {
 
-    private static final Logger logger = Logger.getLogger(DmObjectFactory.class.getName());
+    private static final Logger logger = LogManager.getLogger(DmObjectFactory.class.getName());
     private static final Gson gson = new GsonBuilder().create();
 
     /**
diff --git a/src/java/DmBase/src/java/gov/anl/aps/dm/common/utilities/CryptUtility.java b/src/java/DmBase/src/java/gov/anl/aps/dm/common/utilities/CryptUtility.java
index 426fc8574d3b34262d734c8d7017ef376ce35e63..5430fad287874444749ad15e19284c2a608971c1 100644
--- a/src/java/DmBase/src/java/gov/anl/aps/dm/common/utilities/CryptUtility.java
+++ b/src/java/DmBase/src/java/gov/anl/aps/dm/common/utilities/CryptUtility.java
@@ -6,7 +6,8 @@ import java.security.spec.InvalidKeySpecException;
 import java.util.Random;
 import javax.crypto.SecretKeyFactory;
 import javax.crypto.spec.PBEKeySpec;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.primefaces.util.Base64;
 
 /**
@@ -21,7 +22,7 @@ public class CryptUtility {
     private static final char[] SaltCharset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".toCharArray();
     private static final String SaltDelimiter = "$";
 
-    private static final Logger logger = Logger.getLogger(CryptUtility.class.getName());
+    private static final Logger logger = LogManager.getLogger(CryptUtility.class.getName());
 
     /**
      * Generate random string.
diff --git a/src/java/DmBase/src/java/gov/anl/aps/dm/common/utilities/NoServerVerificationSSLSocketFactory.java b/src/java/DmBase/src/java/gov/anl/aps/dm/common/utilities/NoServerVerificationSSLSocketFactory.java
index 96088b175ebd41a7f3bdf769e2bcf230f80be2e8..006633c673003e22e87c39379ff8e29d2b2846f7 100644
--- a/src/java/DmBase/src/java/gov/anl/aps/dm/common/utilities/NoServerVerificationSSLSocketFactory.java
+++ b/src/java/DmBase/src/java/gov/anl/aps/dm/common/utilities/NoServerVerificationSSLSocketFactory.java
@@ -9,7 +9,8 @@ import javax.net.SocketFactory;
 import javax.net.ssl.SSLContext;
 import javax.net.ssl.SSLSocketFactory;
 import javax.net.ssl.TrustManager;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * SSL socket factory that does not verify server credentials.
@@ -22,7 +23,7 @@ import org.apache.log4j.Logger;
  */
 public class NoServerVerificationSSLSocketFactory extends SSLSocketFactory {
 
-    private static final Logger logger = Logger.getLogger(NoServerVerificationSSLSocketFactory.class.getName());
+    private static final Logger logger = LogManager.getLogger(NoServerVerificationSSLSocketFactory.class.getName());
 
     private SSLSocketFactory factory;
 
diff --git a/src/java/DmWebPortal/nbproject/build-impl.xml b/src/java/DmWebPortal/nbproject/build-impl.xml
index a623f1bfc8601c91104f78e5d84c07217a8b0d95..8b88c03d0a88c63fb91ad2c3599b626ef1037559 100644
--- a/src/java/DmWebPortal/nbproject/build-impl.xml
+++ b/src/java/DmWebPortal/nbproject/build-impl.xml
@@ -1040,8 +1040,9 @@ exists or setup the property manually. For example like this:
         <copyfiles files="${reference.DmApi.jar}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
         <copyfiles files="${file.reference.gson-2.3.1.jar}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
         <copyfiles files="${file.reference.itext-2.1.7.jar}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
-        <copyfiles files="${file.reference.log4j-1.2.17.jar}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
-        <copyfiles files="${file.reference.postgresql-9.3-1102.jdbc41.jar}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
+        <copyfiles files="${file.reference.log4j-core-2.13.2.jar}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
+        <copyfiles files="${file.reference.log4j-api-2.13.2.jar}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
+        <copyfiles files="${file.reference.postgresql-42.2.8.jar}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
         <copyfiles files="${file.reference.org-netbeans-modules-java-j2seproject-copylibstask.jar}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
         <copyfiles files="${file.reference.poi-3.10.jar}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
         <copyfiles files="${file.reference.primefaces-6.0.jar}" iftldtodir="${build.web.dir}/WEB-INF" todir="${dist.ear.dir}/lib"/>
@@ -1053,8 +1054,9 @@ exists or setup the property manually. For example like this:
         <copyfiles files="${reference.DmApi.jar}" todir="${build.web.dir}/WEB-INF/lib"/>
         <copyfiles files="${file.reference.gson-2.3.1.jar}" todir="${build.web.dir}/WEB-INF/lib"/>
         <copyfiles files="${file.reference.itext-2.1.7.jar}" todir="${build.web.dir}/WEB-INF/lib"/>
-        <copyfiles files="${file.reference.log4j-1.2.17.jar}" todir="${build.web.dir}/WEB-INF/lib"/>
-        <copyfiles files="${file.reference.postgresql-9.3-1102.jdbc41.jar}" todir="${build.web.dir}/WEB-INF/lib"/>
+        <copyfiles files="${file.reference.log4j-core-2.13.2.jar}" todir="${build.web.dir}/WEB-INF/lib"/>
+        <copyfiles files="${file.reference.log4j-api-2.13.2.jar}" todir="${build.web.dir}/WEB-INF/lib"/>
+        <copyfiles files="${file.reference.postgresql-42.2.8.jar}" todir="${build.web.dir}/WEB-INF/lib"/>
         <copyfiles files="${file.reference.org-netbeans-modules-java-j2seproject-copylibstask.jar}" todir="${build.web.dir}/WEB-INF/lib"/>
         <copyfiles files="${file.reference.poi-3.10.jar}" todir="${build.web.dir}/WEB-INF/lib"/>
         <copyfiles files="${file.reference.primefaces-6.0.jar}" todir="${build.web.dir}/WEB-INF/lib"/>
diff --git a/src/java/DmWebPortal/nbproject/project.properties b/src/java/DmWebPortal/nbproject/project.properties
index 4b807418c429ea163533a0e5ea9a4a730bc28735..39e40c3e1b9eea70cea90d15e2431c67b10628c0 100644
--- a/src/java/DmWebPortal/nbproject/project.properties
+++ b/src/java/DmWebPortal/nbproject/project.properties
@@ -33,10 +33,11 @@ endorsed.classpath=\
 excludes=
 file.reference.gson-2.3.1.jar=../lib/gson-2.3.1.jar
 file.reference.itext-2.1.7.jar=lib/itext-2.1.7.jar
-file.reference.log4j-1.2.17.jar=../lib/log4j-1.2.17.jar
+file.reference.log4j-core-2.13.2.jar=../lib/log4j-core-2.13.2.jar
+file.reference.log4j-api-2.13.2.jar=../lib/log4j-api-2.13.2.jar
 file.reference.org-netbeans-modules-java-j2seproject-copylibstask.jar=lib/org-netbeans-modules-java-j2seproject-copylibstask.jar
 file.reference.poi-3.10.jar=lib/poi-3.10.jar
-file.reference.postgresql-9.3-1102.jdbc41.jar=lib/postgresql-9.3-1102.jdbc41.jar
+file.reference.postgresql-42.2.8.jar=lib/postgresql-42.2.8.jar
 file.reference.primefaces-6.0.jar=../lib/primefaces-6.0.jar
 includes=**
 j2ee.compile.on.save=true
@@ -56,8 +57,9 @@ javac.classpath=\
     ${reference.DmApi.jar}:\
     ${file.reference.gson-2.3.1.jar}:\
     ${file.reference.itext-2.1.7.jar}:\
-    ${file.reference.log4j-1.2.17.jar}:\
-    ${file.reference.postgresql-9.3-1102.jdbc41.jar}:\
+    ${file.reference.log4j-core-2.13.2.jar}:\
+    ${file.reference.log4j-api-2.13.2.jar}:\
+    ${file.reference.postgresql-42.2.8.jar}:\
     ${file.reference.org-netbeans-modules-java-j2seproject-copylibstask.jar}:\
     ${file.reference.poi-3.10.jar}:\
     ${file.reference.primefaces-6.0.jar}
diff --git a/src/java/DmWebPortal/nbproject/project.xml b/src/java/DmWebPortal/nbproject/project.xml
index fda3ebc8be9c99d4c97302370192422d4c869f2f..97bf35a1865272ca08347f04556e77c176f3a060 100644
--- a/src/java/DmWebPortal/nbproject/project.xml
+++ b/src/java/DmWebPortal/nbproject/project.xml
@@ -23,11 +23,15 @@
                     <path-in-war>WEB-INF/lib</path-in-war>
                 </library>
                 <library dirs="200">
-                    <file>${file.reference.log4j-1.2.17.jar}</file>
+                    <file>${file.reference.log4j-core-2.13.2.jar}</file>
                     <path-in-war>WEB-INF/lib</path-in-war>
                 </library>
                 <library dirs="200">
-                    <file>${file.reference.postgresql-9.3-1102.jdbc41.jar}</file>
+                    <file>${file.reference.log4j-api-2.13.2.jar}</file>
+                    <path-in-war>WEB-INF/lib</path-in-war>
+                </library>
+                <library dirs="200">
+                    <file>${file.reference.postgresql-42.2.8.jar}</file>
                     <path-in-war>WEB-INF/lib</path-in-war>
                 </library>
                 <library dirs="200">
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/DmEntityController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/DmEntityController.java
index 90393b339eabbc97b288783bc81c84a776cdba91..a5419c716579a62fa0e46513904e6bbd616c671e 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/DmEntityController.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/DmEntityController.java
@@ -15,12 +15,13 @@ import javax.annotation.PostConstruct;
 import javax.faces.model.DataModel;
 import javax.faces.model.ListDataModel;
 import javax.faces.model.SelectItem;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 import org.primefaces.event.data.FilterEvent;
 
 public abstract class DmEntityController<EntityType extends DmEntity, FacadeType extends DmEntityDbFacade<EntityType>> implements Serializable {
 
-    private static final Logger logger = Logger.getLogger(DmEntityController.class.getName());
+    private static final Logger logger = LogManager.getLogger(DmEntityController.class.getName());
     private static final int NUMBER_OF_ROWS_FOR_DISPLAY_LIST = 25;
     private static final int NUMBER_OF_ROWS_FOR_SELECT_LIST = 10;
 
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentController.java
index 2dae4c8ef3d70103e12b467271f27048e9c32103..53c2552e3df6586b14bb62b5bfa916b8f6d0ea1b 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentController.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentController.java
@@ -24,13 +24,14 @@ import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import javax.faces.convert.Converter;
 import javax.faces.convert.FacesConverter;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 @Named("experimentController")
 @SessionScoped
 public class ExperimentController extends DmEntityController<Experiment, ExperimentDbFacade> {
 
-    private static final Logger logger = Logger.getLogger(ExperimentController.class.getName());
+    private static final Logger logger = LogManager.getLogger(ExperimentController.class.getName());
 
     @EJB
     private ExperimentDbFacade experimentDbFacade;
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentRoleTypeController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentRoleTypeController.java
index b38f5982667b38de1a1e723522101fd404d111f6..5d28c75b4daeeaaac3138388b3274aec128ad516 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentRoleTypeController.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentRoleTypeController.java
@@ -9,13 +9,14 @@ import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import javax.faces.convert.Converter;
 import javax.faces.convert.FacesConverter;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 @Named("experimentRoleTypeController")
 @SessionScoped
 public class ExperimentRoleTypeController extends DmEntityController<ExperimentRoleType, ExperimentRoleTypeDbFacade> {
 
-    private static final Logger logger = Logger.getLogger(ExperimentRoleTypeController.class.getName());
+    private static final Logger logger = LogManager.getLogger(ExperimentRoleTypeController.class.getName());
 
     @EJB
     private ExperimentRoleTypeDbFacade experimentRoleTypeDbFacade;
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentStationController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentStationController.java
index c3b02b8abb41ff80ef59acbb436f003dadc5388c..06b6730f18743d565c1f3cb3b70d867e8bca6261 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentStationController.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentStationController.java
@@ -23,13 +23,14 @@ import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import javax.faces.convert.Converter;
 import javax.faces.convert.FacesConverter;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 @Named("experimentStationController")
 @SessionScoped
 public class ExperimentStationController extends DmEntityController<ExperimentStation, ExperimentStationDbFacade> {
 
-    private static final Logger logger = Logger.getLogger(ExperimentStationController.class.getName());
+    private static final Logger logger = LogManager.getLogger(ExperimentStationController.class.getName());
 
     @EJB
     private ExperimentStationDbFacade experimentStationDbFacade;
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentTypeController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentTypeController.java
index befb9740ab42120d0d5a98425ccf7af7a5e9577e..dadefb189b4002777d788e6e467eac83fc6458e7 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentTypeController.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/ExperimentTypeController.java
@@ -12,13 +12,14 @@ import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import javax.faces.convert.Converter;
 import javax.faces.convert.FacesConverter;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 @Named("experimentTypeController")
 @SessionScoped
 public class ExperimentTypeController extends DmEntityController<ExperimentType, ExperimentTypeDbFacade> {
 
-    private static final Logger logger = Logger.getLogger(ExperimentTypeController.class.getName());
+    private static final Logger logger = LogManager.getLogger(ExperimentTypeController.class.getName());
 
     @EJB
     private ExperimentTypeDbFacade experimentTypeDbFacade;
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/LoginController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/LoginController.java
index 96de3ff789fbcf28fbd1e093e762a154fe1e156e..ce0c5befb9acd3a66cb0b6e0eb22ed010aa1ba6d 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/LoginController.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/LoginController.java
@@ -19,7 +19,8 @@ import javax.enterprise.context.SessionScoped;
 import javax.faces.context.ExternalContext;
 import javax.faces.context.FacesContext;
 import javax.inject.Named;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * Login controller.
@@ -37,7 +38,7 @@ public class LoginController implements Serializable {
     private UserInfo user = null;
     private boolean isAdmin;
 
-    private static final Logger logger = Logger.getLogger(LoginController.class.getName());
+    private static final Logger logger = LogManager.getLogger(LoginController.class.getName());
 
     /**
      * Constructor.
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/StorageController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/StorageController.java
index 7efadfe8cef6bd73920e8640ea6ea8b556ba919c..68f72939984275343aed82ae77f1e56d85c1ad48 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/StorageController.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/StorageController.java
@@ -12,13 +12,14 @@ import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import javax.faces.convert.Converter;
 import javax.faces.convert.FacesConverter;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 @Named("storageController")
 @SessionScoped
 public class StorageController extends DmEntityController<Storage, StorageDbFacade> {
 
-    private static final Logger logger = Logger.getLogger(StorageController.class.getName());
+    private static final Logger logger = LogManager.getLogger(StorageController.class.getName());
 
     @EJB
     private StorageDbFacade storageDbFacade;
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/SystemRoleTypeController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/SystemRoleTypeController.java
index 4fbae6ecd9517f37003e9ec362d2abd59cb64307..9a2af7ddcc603ff026b860cd79042074f7ebd999 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/SystemRoleTypeController.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/SystemRoleTypeController.java
@@ -9,13 +9,14 @@ import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import javax.faces.convert.Converter;
 import javax.faces.convert.FacesConverter;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 @Named("systemRoleTypeController")
 @SessionScoped
 public class SystemRoleTypeController extends DmEntityController<SystemRoleType, SystemRoleTypeDbFacade> {
 
-    private static final Logger logger = Logger.getLogger(SystemRoleTypeController.class.getName());
+    private static final Logger logger = LogManager.getLogger(SystemRoleTypeController.class.getName());
 
     @EJB
     private SystemRoleTypeDbFacade systemRoleTypeDbFacade;
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserInfoController.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserInfoController.java
index f23cd485c3e4c37f08be0fb368c362af622b6a85..7be8ed5c151e642f4489c09c2c36b61cb2208b10 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserInfoController.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/controllers/UserInfoController.java
@@ -24,13 +24,14 @@ import javax.faces.context.FacesContext;
 import javax.faces.convert.Converter;
 import javax.faces.convert.FacesConverter;
 import javax.inject.Named;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 @Named("userInfoController")
 @SessionScoped
 public class UserInfoController extends DmEntityController<UserInfo, UserInfoDbFacade> {
 
-    private static final Logger logger = Logger.getLogger(UserInfoController.class.getName());
+    private static final Logger logger = LogManager.getLogger(UserInfoController.class.getName());
 
     @EJB
     private UserInfoDbFacade userInfoDbFacade;
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/utilities/ConfigurationUtility.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/utilities/ConfigurationUtility.java
index 23b2b0c758ae6d7467b1f9ad970dac747a9420f4..3bf01ffde62e17c9807c3d7bf586731d10843b85 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/utilities/ConfigurationUtility.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/utilities/ConfigurationUtility.java
@@ -5,14 +5,15 @@ import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Properties;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 public class ConfigurationUtility {
 
     public static final String PropertiesPath = "dm.portal.properties";
     public static final String PropertiesDelimiter = ",";
    
-    private static final Logger logger = Logger.getLogger(ConfigurationUtility.class.getName());
+    private static final Logger logger = LogManager.getLogger(ConfigurationUtility.class.getName());
     private static final Properties portalProperties = loadProperties(PropertiesPath);
 
     public Properties getPortalProperties() {
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/utilities/DmApiFactory.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/utilities/DmApiFactory.java
index efd7fe283f8830c69e72dd561ba7d127a0e61d44..8c9c15f8e8a8adbbd6e46b829748592b67d965a2 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/utilities/DmApiFactory.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/utilities/DmApiFactory.java
@@ -7,10 +7,11 @@ import gov.anl.aps.dm.common.exceptions.DmException;
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.util.Scanner;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 public class DmApiFactory {
-    private static final Logger logger = Logger.getLogger(DmApiFactory.class.getName());
+    private static final Logger logger = LogManager.getLogger(DmApiFactory.class.getName());
 
     public static ExperimentDsApi getExperimentDsApi() throws DmException {
         String webServiceUrl = ConfigurationUtility.getPortalProperty(DmProperty.DS_WEB_SERVICE_URL_PROPERTY_NAME);
diff --git a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/utilities/LdapUtility.java b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/utilities/LdapUtility.java
index f22fe3112e700fb98ef3c9e33c3967881efbf724..194bf21cb259edc553d71efcc0798f5ae5fb170a 100644
--- a/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/utilities/LdapUtility.java
+++ b/src/java/DmWebPortal/src/java/gov/anl/aps/dm/portal/utilities/LdapUtility.java
@@ -6,7 +6,8 @@ import javax.naming.Context;
 import javax.naming.NamingException;
 import javax.naming.directory.DirContext;
 import javax.naming.directory.InitialDirContext;
-import org.apache.log4j.Logger;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.LogManager;
 
 /**
  * LDAP utility class for verifying user credentials.
@@ -20,7 +21,7 @@ public class LdapUtility {
     private static final String ldapUrl = ConfigurationUtility.getPortalProperty(LdapUrlPropertyName);
     private static final String ldapDnString = ConfigurationUtility.getPortalProperty(LdapDnStringPropertyName);
 
-    private static final Logger logger = Logger.getLogger(LdapUtility.class.getName());
+    private static final Logger logger = LogManager.getLogger(LdapUtility.class.getName());
 
     /**
      * Validate user credentials.
diff --git a/src/java/DmWebPortal/src/java/log4j.properties b/src/java/DmWebPortal/src/java/log4j.properties
deleted file mode 100644
index 4fbd9dde38f2d565e9560f3055c5dae18601041d..0000000000000000000000000000000000000000
--- a/src/java/DmWebPortal/src/java/log4j.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-# Root logger option
-log4j.rootCategory=ERROR,stdout
- 
-# Direct log messages to stdout
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-#log4j.appender.stdout.Target=System.out
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss,SSS} %-5p %c{1} [%t]: %m%n
-
-# Log levels
-log4j.category.gov.anl.aps.dm=DEBUG
diff --git a/src/java/DmWebPortal/src/java/log4j2.xml b/src/java/DmWebPortal/src/java/log4j2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..80972440fbcd43a0c1903282c02701704b7c7b09
--- /dev/null
+++ b/src/java/DmWebPortal/src/java/log4j2.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="DEBUG">
+  <Appenders>
+    <Console name="Console" target="SYSTEM_OUT">
+       <PatternLayout pattern="%d{yyyy/MM/dd HH:mm:ss,SSS} %t %-5level %c{1.} - %msg"/>
+    </Console>
+  </Appenders>
+  <Loggers>
+     <Root level="debug">
+        <AppenderRef ref="Console"/>
+     </Root>   
+  </Loggers>
+</Configuration>
+
diff --git a/src/java/lib/log4j-1.2.17.jar b/src/java/lib/log4j-1.2.17.jar
deleted file mode 100644
index 068867ebfd231db09a7775794eea8127420380ed..0000000000000000000000000000000000000000
Binary files a/src/java/lib/log4j-1.2.17.jar and /dev/null differ
diff --git a/src/java/lib/log4j-api-2.13.2.jar b/src/java/lib/log4j-api-2.13.2.jar
new file mode 100644
index 0000000000000000000000000000000000000000..221a249835809183dcb8be36a118e0d45ee05fe9
Binary files /dev/null and b/src/java/lib/log4j-api-2.13.2.jar differ
diff --git a/src/java/lib/log4j-core-2.13.2.jar b/src/java/lib/log4j-core-2.13.2.jar
new file mode 100644
index 0000000000000000000000000000000000000000..dc54acbfac645b11f1d23bf8d5461f26152d6377
Binary files /dev/null and b/src/java/lib/log4j-core-2.13.2.jar differ