diff --git a/CHANGES b/CHANGES
index 460f6f5af12bd00b3ffecfa7494dad25332e6b34..276b149c8f751a64e0bc732d042c6c7c0707ce07 100644
--- a/CHANGES
+++ b/CHANGES
@@ -12,6 +12,67 @@
 ===
 ==============================================================================
 
+------------------------------------------------------------------------------
+--- Functionality changes from Asterisk 18.3.0 to Asterisk 18.4.0 ------------
+------------------------------------------------------------------------------
+
+logger
+------------------
+ * The dateformat option in logger.conf will now control the remote
+   console (asterisk -r -T) timestamp format.  Previously, dateformat only
+   controlled the formatting of the timestamp going to log files and the
+   main console (asterisk -c) but only for non-verbose messages.
+
+   Internally, Asterisk does not send the logging timestamp with verbose
+   messages to console clients. It's up to the Asterisk remote consoles
+   to format verbose messages.  Asterisk remote consoles previously did
+   not load dateformat from logger.conf.
+
+   Previously there was a non-configurable and hard-coded "%b %e %T"
+   dateformat that would be used no matter what on all verbose console
+   messages printed on remote consoles.
+
+   Example:
+   logger.conf
+    dateformat=%F %T.%3q
+
+   # asterisk -rvvv -T
+   [2021-03-19 09:54:19.760-0400]  Loading res_stasis_answer.so.
+   [Mar 19 09:55:43]     -- Goto (dialExten,s,1)
+
+   Given the following example configuration in logger.conf, Asterisk log
+   files and the console, will log verbose messages using the given
+   timestamp.  Now ensuring that all remote console messages are logged
+   with the same dateformat as other log streams.
+
+   ---
+   [general]
+   dateformat=%F %T.%3q
+
+   [logfiles]
+   console  => notice,warning,error,verbose
+   full     => notice,warning,error,debug,verbose
+   ---
+
+   Now we have a globally-defined dateformat that will be used
+   consistently across the Asterisk main console, remote consoles, and
+   log files.
+
+   Now we have consistent logging:
+
+   # asterisk -rvvv -T
+   [2021-03-19 09:54:19.760-0400]  Loading res_stasis_answer.so.
+   [2021-03-19 09:55:43.920-0400]     -- Goto (dialExten,s,1)
+
+res_pjsip
+------------------
+ * PJSIP transports can now be partially reloaded safely. This allows the
+   local_net and external_* options to be updated without restarting Asterisk.
+
+ * PJSIP endpoints can now be configured to skip authentication when
+   handling OPTIONS requests by setting the allow_unauthenticated_options
+   configuration property to 'yes.'
+
 ------------------------------------------------------------------------------
 --- Functionality changes from Asterisk 18.2.2 to Asterisk 18.3.0 ------------
 ------------------------------------------------------------------------------
diff --git a/UPGRADE.txt b/UPGRADE.txt
index 7db926f1b5cae712bb4a36912f239bac9b1479e6..5782164529d352a6bb4cf0817ac054883441edcc 100644
--- a/UPGRADE.txt
+++ b/UPGRADE.txt
@@ -18,6 +18,16 @@
 ===
 ===========================================================
 
+------------------------------------------------------------------------------
+--- Functionality changes from Asterisk 18.3.0 to Asterisk 18.4.0 ------------
+------------------------------------------------------------------------------
+
+menuselect
+------------------
+ * menuselect --enable, --disable, --enable-category and --disable-category will
+   now fail with a non-zero exit code instead of silently failing if an invalid
+   option or category is specified.
+
 ------------------------------------------------------------------------------
 --- Functionality changes from Asterisk 18.2.2 to Asterisk 18.3.0 ------------
 ------------------------------------------------------------------------------
diff --git a/doc/CHANGES-staging/logger_dateformat.txt b/doc/CHANGES-staging/logger_dateformat.txt
deleted file mode 100644
index efeb11803d81635467a27347bc537ce97a0448dc..0000000000000000000000000000000000000000
--- a/doc/CHANGES-staging/logger_dateformat.txt
+++ /dev/null
@@ -1,47 +0,0 @@
-Subject: logger
-
-The dateformat option in logger.conf will now control the remote
-console (asterisk -r -T) timestamp format.  Previously, dateformat only
-controlled the formatting of the timestamp going to log files and the
-main console (asterisk -c) but only for non-verbose messages.
-
-Internally, Asterisk does not send the logging timestamp with verbose
-messages to console clients. It's up to the Asterisk remote consoles
-to format verbose messages.  Asterisk remote consoles previously did
-not load dateformat from logger.conf.
-
-Previously there was a non-configurable and hard-coded "%b %e %T"
-dateformat that would be used no matter what on all verbose console
-messages printed on remote consoles.
-
-Example:
-logger.conf
- dateformat=%F %T.%3q
-
-# asterisk -rvvv -T
-[2021-03-19 09:54:19.760-0400]  Loading res_stasis_answer.so.
-[Mar 19 09:55:43]     -- Goto (dialExten,s,1)
-
-Given the following example configuration in logger.conf, Asterisk log
-files and the console, will log verbose messages using the given
-timestamp.  Now ensuring that all remote console messages are logged
-with the same dateformat as other log streams.
-
----
-[general]
-dateformat=%F %T.%3q
-
-[logfiles]
-console  => notice,warning,error,verbose
-full     => notice,warning,error,debug,verbose
----
-
-Now we have a globally-defined dateformat that will be used
-consistently across the Asterisk main console, remote consoles, and
-log files.
-
-Now we have consistent logging:
-
-# asterisk -rvvv -T
-[2021-03-19 09:54:19.760-0400]  Loading res_stasis_answer.so.
-[2021-03-19 09:55:43.920-0400]     -- Goto (dialExten,s,1)
diff --git a/doc/CHANGES-staging/pjsip_endpoint_unauthenticated_options.txt b/doc/CHANGES-staging/pjsip_endpoint_unauthenticated_options.txt
deleted file mode 100644
index 9c8d32cb0efb3b26213bb25732bbb42823bac790..0000000000000000000000000000000000000000
--- a/doc/CHANGES-staging/pjsip_endpoint_unauthenticated_options.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-Subject: res_pjsip
-
-PJSIP endpoints can now be configured to skip authentication when
-handling OPTIONS requests by setting the allow_unauthenticated_options
-configuration property to 'yes.'
diff --git a/doc/CHANGES-staging/pjsip_transport_partial_reload.txt b/doc/CHANGES-staging/pjsip_transport_partial_reload.txt
deleted file mode 100644
index 1d1b0b626615cd37917e988e4c8aaa3b77b43bf9..0000000000000000000000000000000000000000
--- a/doc/CHANGES-staging/pjsip_transport_partial_reload.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-Subject: res_pjsip
-
-PJSIP transports can now be partially reloaded safely. This allows the
-local_net and external_* options to be updated without restarting Asterisk.
diff --git a/doc/UPGRADE-staging/menuselect-could-fail.txt b/doc/UPGRADE-staging/menuselect-could-fail.txt
deleted file mode 100644
index e3e20ed833aec3ebc27e325aa3ccb81921b2d2bc..0000000000000000000000000000000000000000
--- a/doc/UPGRADE-staging/menuselect-could-fail.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-Subject: menuselect
-
-menuselect --enable, --disable, --enable-category and --disable-category will
-now fail with a non-zero exit code instead of silently failing if an invalid
-option or category is specified.