diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
index e6d1ba4..5fcd126 100644
--- a/RELEASE-NOTES.md
+++ b/RELEASE-NOTES.md
@@ -14,9 +14,9 @@
  See the License for the specific language governing permissions and
  limitations under the License.
 -->
-# Apache Log4j 2.13.3 Release Notes
+# Apache Log4j 2.14.0 Release Notes
 
-The Apache Log4j 2 team is pleased to announce the Log4j 2.13.3 release!
+The Apache Log4j 2 team is pleased to announce the Log4j 2.14.0 release!
 
 Apache Log4j is a well known framework for logging application behavior. Log4j 2 is an upgrade
 to Log4j that provides significant improvements over its predecessor, Log4j 1.x, and provides
@@ -27,32 +27,124 @@
 
 The artifacts may be downloaded from https://logging.apache.org/log4j/2.x/download.html.
 
-This release contains a fix for bug LOG4J2-2838.
+This release contains a new Layout, JsonTemplateLayout, that is intended to ultimately replace JsonLayout. As its
+name suggests it uses a template to define the elements to include in the JSON. This Layout was contributed by the
+author of the log4j2-logstash-layout at GitHub, and who is now a member of the Log4j community.
+
+Log4j 2.14.0 adds support for MongoDB 4 and removes support for MongoDB 2.
+
+This release also contains a number of bug fixes which are listed below.
 
 Due to a break in compatibility in the SLF4J binding, Log4j now ships with two versions of the SLF4J to Log4j adapters.
 log4j-slf4j-impl should be used with SLF4J 1.7.x and earlier and log4j-slf4j18-impl should be used with SLF4J 1.8.x and
 later.
 
-Note that the default XML, JSON and YAML formats changed in the 2.11.0 release: they no longer have the "timeMillis"
-attribute and instead have an "Instant" element with "epochSecond" and "nanoOfSecond" attributes. If the previous
-behavior is desired the "includeTimeMillis" attribute may be set to true on each of the respective Layouts.
+The Log4j 2.14.0 API, as well as many core components, maintains binary compatibility with previous releases.
 
-The Log4j 2.13.3 API, as well as many core components, maintains binary compatibility with previous releases.
-
-## GA Release 2.13.3
+## GA Release 2.14.0
 
 Changes in this version include:
 
+### New Features
+* [LOG4J2-2957](https://issues.apache.org/jira/browse/LOG4J2-2957):
+Add JsonTemplateLayout.
+* [LOG4J2-2848](https://issues.apache.org/jira/browse/LOG4J2-2848):
+Create module log4j-mongodb4 to use new major version 4 MongoDB driver.
+* [LOG4J2-2858](https://issues.apache.org/jira/browse/LOG4J2-2858):
+More flexible configuration of the Disruptor WaitStrategy. Thanks to Stepan Gorban.
 
 ### Fixed Bugs
-* [LOG4J2-2838](https://issues.apache.org/jira/browse/LOG4J2-2838):
-Fix NullPointerException in ThreadContextDataInjector.
+* [LOG4J2-2925](https://issues.apache.org/jira/browse/LOG4J2-2925):
+Fix broken link in FAQ.
+* [LOG4J2-2911](https://issues.apache.org/jira/browse/LOG4J2-2911):
+Log4j2EventListener in spring.cloud.config.client listens for wrong event.
+* [LOG4J2-2919](https://issues.apache.org/jira/browse/LOG4J2-2919):
+Call ReliabilityStrategy's beforeStopAppenders() method before stopping AsyncAppender. Thanks to Geng Yuanzhe.
+* [LOG4J2-2906](https://issues.apache.org/jira/browse/LOG4J2-2906):
+Fix UnsupportedOperationException when initializing the Log4j2CloudConfigLoggingSystem. Thanks to Stephen Joyner.
+* [LOG4J2-2908](https://issues.apache.org/jira/browse/LOG4J2-2908):
+Move Spring Lookup and Spring PropertySource to its own module.
+* [LOG4J2-2910](https://issues.apache.org/jira/browse/LOG4J2-2910):
+Log4j-web should now stores the servlet context as a map entry instead of in the single external context field.
+* [LOG4J2-2822](https://issues.apache.org/jira/browse/LOG4J2-2822):
+Javadoc link in ThreadContext description was incorrect.
+* [LOG4J2-2894](https://issues.apache.org/jira/browse/LOG4J2-2894):
+Fix spelling error in log message.
+* [LOG4J2-2901](https://issues.apache.org/jira/browse/LOG4J2-2901):
+Missing configuration files should be ignored when creating a composite configuration.
+* [LOG4J2-2883](https://issues.apache.org/jira/browse/LOG4J2-2883):
+When using DirectFileRolloverStrategy the file pattern was not being recalculated on
+        size based rollover after a time based rollover had occurred.
+* [LOG4J2-2875](https://issues.apache.org/jira/browse/LOG4J2-2875):
+Rollover was failing to create directories when using a DirectFileeRolloverStrategy.
+* [LOG4J2-2859](https://issues.apache.org/jira/browse/LOG4J2-2859):
+Fixed typos where mergeFactory should be mergeStrategy. Thanks to Yanming Zhou.
+* [LOG4J2-2832](https://issues.apache.org/jira/browse/LOG4J2-2832):
+Correct class name printed in error message in RollingFileAppender. Thanks to Benjamin Asbach.
+* [LOG4J2-2882](https://issues.apache.org/jira/browse/LOG4J2-2882):
+Support java.util.logging filters when using that API. Thanks to Emmanuel Bourg.
+* [LOG4J2-2880](https://issues.apache.org/jira/browse/LOG4J2-2880):
+Create StackWalker benchmark. Revert back to StackWalker.walk based on benchmark results.
+* [LOG4J2-2867](https://issues.apache.org/jira/browse/LOG4J2-2867):
+Obtain ContextDataProviders asynchronously.
+* [LOG4J2-2877](https://issues.apache.org/jira/browse/LOG4J2-2877):
+Determine the container id to obtain container and image information.
+* [LOG4J2-2844](https://issues.apache.org/jira/browse/LOG4J2-2844):
+Null pointer exception when no network interfaces are available.
+* [LOG4J2-2895](https://issues.apache.org/jira/browse/LOG4J2-2895):
+Fix potential deadlock in asynchronous logging by avoiding blocking for queue space on Log4jThreads
+* [LOG4J2-2837](https://issues.apache.org/jira/browse/LOG4J2-2837):
+Disruptor and JUL no longer recursively start the AsyncLoggerDisruptor
+        resulting in an extra disruptor background thread constantly waiting.
+* [LOG4J2-2867](https://issues.apache.org/jira/browse/LOG4J2-2867):
+RingBufferLogEventTranslator uses a static ContextDataInjector instead of initializing a new object
+        on each thread.
+* [LOG4J2-2898](https://issues.apache.org/jira/browse/LOG4J2-2898):
+Avoid initializing volatile fields with default values. Thanks to Turbanov Andrey.
+* [LOG4J2-2899](https://issues.apache.org/jira/browse/LOG4J2-2899):
+Fix log4j-1.2-api LogEventWrapper threadId and priority accessors when called multiple times.
+* [LOG4J2-2939](https://issues.apache.org/jira/browse/LOG4J2-2939):
+Fix NPE in MDCContextMap on 'contains' and 'isEmpty' invocations. Thanks to Constantin Hirsch.
+* [LOG4J2-2954](https://issues.apache.org/jira/browse/LOG4J2-2954):
+Prevent premature garbage collection of shutdown hooks in DefaultShutdownCallbackRegistry. Thanks to Henry Tung.
 
+### Changes
+* [LOG4J2-2889](https://issues.apache.org/jira/browse/LOG4J2-2889):
+Add date pattern support for HTML layout. Thanks to Geng Yuanzhe.
+* [LOG4J2-2892](https://issues.apache.org/jira/browse/LOG4J2-2892):
+Allow GelfLayout to produce newline delimited events. Thanks to Jakub Lukes.
+* [](https://issues.apache.org/jira/browse/LOG4J2-2892):
+Update MongoDB tests to require Java 8 unconditionally now that Log4j requires Java 8.
+* [](https://issues.apache.org/jira/browse/LOG4J2-2892):
+Update mongodb3.version from 3.12.1 to 3.12.6.
+* [](https://issues.apache.org/jira/browse/LOG4J2-2892):
+Update com.fasterxml.jackson.* 2.10.2 -&gt; 2.11.0.
+* [](https://issues.apache.org/jira/browse/LOG4J2-2892):
+Update org.apache.activemq:activemq-broker 5.15.11 -&gt; 5.16.0.
+* [](https://issues.apache.org/jira/browse/LOG4J2-2892):
+Update org.apache.commons:commons-compress 1.19 -&gt; 1.20.
+* [](https://issues.apache.org/jira/browse/LOG4J2-2892):
+Update org.apache.commons:commons-csv 1.7 -&gt; 1.8.
+* [](https://issues.apache.org/jira/browse/LOG4J2-2892):
+Update org.apache.commons:commons-lang3 3.9 -&gt; 3.10.
+* [](https://issues.apache.org/jira/browse/LOG4J2-2892):
+Update org.codehaus.groovy:* 2.5.6 -&gt; 3.0.5.
+* [](https://issues.apache.org/jira/browse/LOG4J2-2892):
+Update tests junit:junit 4.12 -&gt; 4.13.
+* [](https://issues.apache.org/jira/browse/LOG4J2-2892):
+Update tests commons-io:commons-io 2.6 -&gt; 2.7.
+* [](https://issues.apache.org/jira/browse/LOG4J2-2892):
+Update jackson 2.11.0 -&gt; 2.11.2.
+* [](https://issues.apache.org/jira/browse/LOG4J2-2892):
+Update tests hsqldb 2.5.0 -&gt; 2.5.1.
 
+### Removed
+* [LOG4J2-2851](https://issues.apache.org/jira/browse/LOG4J2-2851):
+Drop log4j-mongodb2 module.
 ---
 
-Apache Log4j 2.13.3 requires a minimum of Java 8 to build and run. Log4j 2.3 was the
-last release that supported Java 6 and Log4j 2.12.1 is the last release to support Java 7.
+Apache Log4j 2.14.0 requires a minimum of Java 8 to build and run. Log4j 2.12.1 is the last release to support
+Java 7.
 
 For complete information on Apache Log4j 2, including instructions on how to submit bug
 reports, patches, or suggestions for improvement, see the Apache Apache Log4j 2 website:
diff --git a/log4j-api-java9/src/test/java/module-info.java b/log4j-api-java9/src/test/java/module-info.java
index 8121d75..761c4be 100644
--- a/log4j-api-java9/src/test/java/module-info.java
+++ b/log4j-api-java9/src/test/java/module-info.java
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
 open module org.apache.logging.log4j.java9test {
     exports org.apache.logging.log4j.util.java9;
     requires org.apache.logging.log4j;
diff --git a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/StringParameterParser.java b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/StringParameterParser.java
index 9524a19..2952d06 100644
--- a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/StringParameterParser.java
+++ b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/util/StringParameterParser.java
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
 package org.apache.logging.log4j.layout.template.json.util;
 
 import org.apache.logging.log4j.util.Strings;
diff --git a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/EcsLayoutTest.java b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/EcsLayoutTest.java
index 21a87aa..4449041 100644
--- a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/EcsLayoutTest.java
+++ b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/EcsLayoutTest.java
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
 package org.apache.logging.log4j.layout.template.json;
 
 import co.elastic.logging.log4j2.EcsLayout;
diff --git a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/GelfLayoutTest.java b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/GelfLayoutTest.java
index 03ded3c..fed0205 100644
--- a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/GelfLayoutTest.java
+++ b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/GelfLayoutTest.java
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
 package org.apache.logging.log4j.layout.template.json;
 
 import org.apache.logging.log4j.core.LogEvent;
diff --git a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonLayoutTest.java b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonLayoutTest.java
index 30cdfe6..5a564d0 100644
--- a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonLayoutTest.java
+++ b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonLayoutTest.java
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
 package org.apache.logging.log4j.layout.template.json;
 
 import org.apache.logging.log4j.core.LogEvent;
diff --git a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutNullEventDelimiterTest.java b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutNullEventDelimiterTest.java
index 73d365c..4af1ca1 100644
--- a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutNullEventDelimiterTest.java
+++ b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutNullEventDelimiterTest.java
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
 package org.apache.logging.log4j.layout.template.json;
 
 import org.apache.logging.log4j.Level;
diff --git a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/LayoutComparisonHelpers.java b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/LayoutComparisonHelpers.java
index c1a9b37..e0be875 100644
--- a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/LayoutComparisonHelpers.java
+++ b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/LayoutComparisonHelpers.java
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
 package org.apache.logging.log4j.layout.template.json;
 
 import org.apache.logging.log4j.core.Layout;
diff --git a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/LogstashIT.java b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/LogstashIT.java
index 84673ef..0ec0aa3 100644
--- a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/LogstashIT.java
+++ b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/LogstashIT.java
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
 package org.apache.logging.log4j.layout.template.json;
 
 import co.elastic.logging.log4j2.EcsLayout;
diff --git a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/util/StringParameterParserTest.java b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/util/StringParameterParserTest.java
index 651f3b1..601c578 100644
--- a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/util/StringParameterParserTest.java
+++ b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/util/StringParameterParserTest.java
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
 package org.apache.logging.log4j.layout.template.json.util;
 
 import org.apache.logging.log4j.layout.template.json.util.StringParameterParser.DoubleQuotedStringValue;
diff --git a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/util/TruncatingBufferedWriterTest.java b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/util/TruncatingBufferedWriterTest.java
index 4b3d3e0..6e46197 100644
--- a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/util/TruncatingBufferedWriterTest.java
+++ b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/util/TruncatingBufferedWriterTest.java
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
 package org.apache.logging.log4j.layout.template.json.util;
 
 import org.assertj.core.api.Assertions;
diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutBenchmarkReport.java b/log4j-perf/src/main/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutBenchmarkReport.java
index 5f8dd2c..523278f 100644
--- a/log4j-perf/src/main/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutBenchmarkReport.java
+++ b/log4j-perf/src/main/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutBenchmarkReport.java
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
 package org.apache.logging.log4j.layout.template.json;
 
 import org.apache.logging.log4j.layout.template.json.util.JsonReader;
diff --git a/log4j-spring-cloud-config/log4j-spring-cloud-config-samples/log4j-spring-cloud-config-sample-application/src/main/java/org/apache/logging/log4j/spring/cloud/config/sample/controller/K8SController.java b/log4j-spring-cloud-config/log4j-spring-cloud-config-samples/log4j-spring-cloud-config-sample-application/src/main/java/org/apache/logging/log4j/spring/cloud/config/sample/controller/K8SController.java
index 5059a49..6322361 100644
--- a/log4j-spring-cloud-config/log4j-spring-cloud-config-samples/log4j-spring-cloud-config-sample-application/src/main/java/org/apache/logging/log4j/spring/cloud/config/sample/controller/K8SController.java
+++ b/log4j-spring-cloud-config/log4j-spring-cloud-config-samples/log4j-spring-cloud-config-sample-application/src/main/java/org/apache/logging/log4j/spring/cloud/config/sample/controller/K8SController.java
@@ -1,6 +1,18 @@
 /*
- * Copyright (c) 2020 Nextiva, Inc. to Present.
- * All rights reserved.
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
  */
 
 package org.apache.logging.log4j.spring.cloud.config.sample.controller;
diff --git a/pom.xml b/pom.xml
index 5ef4de1..2ba42a9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -179,7 +179,7 @@
   <properties>
     <!-- make sure to update these for each release! -->
     <log4jParentDir>${basedir}</log4jParentDir>
-    <Log4jReleaseVersion>2.13.3</Log4jReleaseVersion>
+    <Log4jReleaseVersion>2.14.0</Log4jReleaseVersion>
     <Log4jReleaseManager>Ralph Goers</Log4jReleaseManager>
     <Log4jReleaseKey>B3D8E1BA</Log4jReleaseKey>
     <!--<Log4jReleaseManager>Matt Sicker</Log4jReleaseManager> -->
@@ -1315,6 +1315,7 @@
             <exclude>felix-cache/**</exclude>
             <exclude>**/README.md</exclude>
             <exclude>RELEASE-NOTES.md</exclude>
+            <exclude>SECURITY.md</exclude>
             <exclude>**/*.yml</exclude>
             <exclude>**/*.yaml</exclude>
             <exclude>**/*.json</exclude>
@@ -1448,6 +1449,7 @@
             <!-- Other -->
             <exclude>felix-cache/**</exclude>
             <exclude>**/README.md</exclude>
+            <exclude>SECURITY.md</exclude>
             <exclude>RELEASE-NOTES.md</exclude>
             <exclude>**/*.yml</exclude>
             <exclude>**/*.yaml</exclude>
@@ -1621,6 +1623,7 @@
                 <exclude>felix-cache/**</exclude>
                 <exclude>**/README.md</exclude>
                 <exclude>RELEASE-NOTES.md</exclude>
+                <exclude>SECURITY.md</exclude>
                 <exclude>**/*.yml</exclude>
                 <exclude>**/*.yaml</exclude>
                 <exclude>**/*.json</exclude>
diff --git a/src/changes/announcement.vm b/src/changes/announcement.vm
index 2828b54..b72d307 100644
--- a/src/changes/announcement.vm
+++ b/src/changes/announcement.vm
@@ -65,16 +65,18 @@
 
 The artifacts may be downloaded from https://logging.apache.org/log4j/2.x/download.html.
 
-This release contains a fix for bug LOG4J2-2838.
+This release contains a new Layout, JsonTemplateLayout, that is intended to ultimately replace JsonLayout. As its
+name suggests it uses a template to define the elements to include in the JSON. This Layout was contributed by the
+author of the log4j2-logstash-layout at GitHub, and who is now a member of the Log4j community.
+
+Log4j 2.14.0 adds support for MongoDB 4 and removes support for MongoDB 2.
+
+This release also contains a number of bug fixes which are listed below.
 
 Due to a break in compatibility in the SLF4J binding, Log4j now ships with two versions of the SLF4J to Log4j adapters.
 log4j-slf4j-impl should be used with SLF4J 1.7.x and earlier and log4j-slf4j18-impl should be used with SLF4J 1.8.x and
 later.
 
-Note that the default XML, JSON and YAML formats changed in the 2.11.0 release: they no longer have the "timeMillis"
-attribute and instead have an "Instant" element with "epochSecond" and "nanoOfSecond" attributes. If the previous
-behavior is desired the "includeTimeMillis" attribute may be set to true on each of the respective Layouts.
-
 The Log4j ${relVersion} API, as well as many core components, maintains binary compatibility with previous releases.
 
 ## Hack to improve layout: replace all pairs of spaces with a single new-line
@@ -117,8 +119,8 @@
 #end
 ---
 
-Apache Log4j ${relVersion} requires a minimum of Java 8 to build and run. Log4j 2.3 was the
-last release that supported Java 6 and Log4j 2.12.1 is the last release to support Java 7.
+Apache Log4j ${relVersion} requires a minimum of Java 8 to build and run. Log4j 2.12.1 is the last release to support
+Java 7.
 
 For complete information on ${project.name}, including instructions on how to submit bug
 reports, patches, or suggestions for improvement, see the Apache ${project.name} website:
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 9268ab4..3fe570d 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -29,7 +29,13 @@
          - "update" - Change
          - "remove" - Removed
     -->
-    <release version="2.14.0" date="2020-MM-DD" description="GA Release 2.14.0">
+    <release version="2.14.0" date="2020-11-06" description="GA Release 2.14.0">
+      <action issue="LOG4J2-2925" dev="rgoers" type="fix">
+        Fix broken link in FAQ.
+      </action>
+      <action issue="LOG4J2-2957" dev="vy" type="add">
+        Add JsonTemplateLayout.
+      </action>
       <action issue="LOG4J2-2911" dev="rgoers" type="fix">
         Log4j2EventListener in spring.cloud.config.client listens for wrong event.
       </action>
diff --git a/src/site/markdown/faq.md.vm b/src/site/markdown/faq.md.vm
index 26dbe34..d68e69f 100644
--- a/src/site/markdown/faq.md.vm
+++ b/src/site/markdown/faq.md.vm
@@ -434,7 +434,7 @@
 Log4j can log any Object that implements `java.lang.CharSequence`
 or `org.apache.logging.log4j.util.StringBuilderFormattable` without creating garbage.
 
-The [`org.slf4j.spi.LocationAwareLogger::log`](http://www.slf4j.org/api/org/slf4j/spi/LocationAwareLogger.html\#log(org.slf4j.Marker, java.lang.String, int, java.lang.String, java.lang.Object[], java.lang.Throwable))
+The [`org.slf4j.spi.LocationAwareLogger::log`](http://www.slf4j.org/api/org/slf4j/spi/LocationAwareLogger.html\#log(org.slf4j.Marker,java.lang.String,int,java.lang.String,java.lang.Object%5B%5D,java.lang.Throwable))
 method is not yet implemented
 in a garbage-free manner in the log4j-slf4j-impl binding. It creates a new message object for each call.
 
diff --git a/src/site/markdown/index.md.vm b/src/site/markdown/index.md.vm
index 8edc96d..d00b1db 100644
--- a/src/site/markdown/index.md.vm
+++ b/src/site/markdown/index.md.vm
@@ -131,9 +131,8 @@
 
 $h2 Requirements
 
-Log4j 2.13.0 and greater require Java 8. Version 2.4 through 2.12.1 required Java 7 and versions 2.0-alpha1 to 2.3
-required Java 6. Some features require optional dependencies; the documentation for these features specifies the
-dependencies.
+Log4j 2.13.0 and greater require Java 8. Version 2.4 through 2.12.1 required Java 7. Some features require optional
+dependencies; the documentation for these features will specify the required dependencies.
 
 $h2 News
 
@@ -145,18 +144,10 @@
 runtime. This release contains new features and fixes which can be found
 in the latest [changes report](changes-report.html#a$Log4jReleaseVersion).
 
-Note that subsequent to the release of Log4j 2.6 a minor source incompatibility with prior release was found due to the
-addition of new methods to the Logger interface. If you have code that does:
+Log4j 2.14.0 contains a new Layout, [JsonTemplateLayout](manual/json-template-layout.html), that is intended to
+ultimately replace JsonLayout. As its name suggests it uses a template to define the elements to include in the JSON.
+This Layout was contributed by the author of the log4j2-logstash-layout at GitHub, and who is now a member of the Log4j community.
 
-    logger.error(null, "This is the log message", throwable);
-
-or similar with any log level you will get a compiler error saying the reference is ambiguous. To correct this either
-do:
-
-    logger.error("This is the log message", throwable);
-
-or
-
-    logger.error((Marker) null, "This is the log message", throwable);
+Log4j 2.14.0 adds support for MongoDB 4 and removes support for MongoDB 2.
 
 Log4j $Log4jReleaseVersion maintains binary compatibility with previous releases.
