This is an automated email from the ASF dual-hosted git repository.

epugh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/main by this push:
     new b74b77c212c SOLR-17864: Migrate to dot separated naming of environment 
variables for a initial set of variables. (#3312)
b74b77c212c is described below

commit b74b77c212cb4574210445a3075d03cc7258cc6f
Author: Eric Pugh <[email protected]>
AuthorDate: Fri Aug 22 09:56:11 2025 -0400

    SOLR-17864: Migrate to dot separated naming of environment variables for a 
initial set of variables. (#3312)
    
    * Introduce back compat for properties capablity.
    * Properties that ended in .disabled, and are now flipped to .enabled also 
continue to work in backcompat matter.
    * Slim down the start up scripts
    * Introduce standardized naming pattern.
---
 dev-docs/ui/testing-and-deployment.adoc            |  4 +-
 dev-tools/scripts/cloud.sh                         |  2 +-
 gradle/ide/eclipse/run-solr-cloud.launch           |  2 +-
 gradle/ide/eclipse/run-solr.launch                 |  2 +-
 .../randomization/policies/solr-tests.policy       |  8 +--
 solr/CHANGES.txt                                   |  2 +
 solr/benchmark/log4j2-bench.xml                    | 12 ++---
 .../java/org/apache/solr/bench/BaseBenchState.java |  2 +-
 .../org/apache/solr/bench/MiniClusterState.java    |  2 +-
 solr/benchmark/src/test-files/log4j2.xml           | 10 ++--
 solr/bin/solr                                      | 42 +++-------------
 solr/bin/solr.cmd                                  | 38 +++------------
 solr/bin/solr.in.cmd                               | 12 ++---
 solr/bin/solr.in.sh                                | 12 ++---
 .../src/java/org/apache/solr/cli/PackageTool.java  |  2 +-
 .../org/apache/solr/core/ConfigSetService.java     | 15 +++---
 .../java/org/apache/solr/core/CoreContainer.java   |  3 +-
 .../src/java/org/apache/solr/core/NodeConfig.java  |  9 ++--
 .../src/java/org/apache/solr/pkg/PackageAPI.java   |  4 +-
 .../apache/solr/servlet/CoreContainerProvider.java |  2 +-
 .../apache/solr/servlet/LoadAdminUiServlet.java    | 12 ++---
 .../apache/solr/servlet/SolrDispatchFilter.java    |  3 +-
 .../apache/solr/servlet/SolrRequestParsers.java    |  4 +-
 .../org/apache/solr/util/StartupLoggingUtils.java  |  4 +-
 .../test/org/apache/solr/cli/PackageToolTest.java  |  4 +-
 .../org/apache/solr/cli/TestSolrCLIRunExample.java |  2 +-
 .../solr/cloud/DeleteInactiveReplicaTest.java      |  4 +-
 .../org/apache/solr/cloud/TestConfigSetsAPI.java   |  8 +--
 .../test/org/apache/solr/cloud/ZkFailoverTest.java |  6 +--
 .../cluster/events/ClusterEventProducerTest.java   |  4 +-
 .../solr/filestore/TestDistribFileStore.java       |  4 +-
 .../apache/solr/handler/TestContainerPlugin.java   |  6 +--
 .../solr/pkg/PackageStoreSchemaPluginsTest.java    |  4 +-
 .../src/test/org/apache/solr/pkg/TestPackages.java |  4 +-
 .../apache/solr/request/TestRemoteStreaming.java   |  4 +-
 .../org/apache/solr/request/TestStreamBody.java    |  2 +-
 .../org/apache/solr/search/TestSmileRequest.java   |  2 +-
 .../apache/solr/search/json/TestJsonRequest.java   |  2 +-
 .../org/apache/solr/servlet/CacheHeaderTest.java   |  3 +-
 .../solr/servlet/DirectSolrConnectionTest.java     |  2 +-
 .../apache/solr/servlet/SolrRequestParserTest.java |  4 +-
 solr/docker/tests/cases/test_log4j/log4j2.xml      | 12 ++---
 solr/packaging/test/test_basic_auth.bats           |  2 +-
 solr/packaging/test/test_packages.bats             |  6 +--
 solr/packaging/test/test_start_solr.bats           |  5 ++
 solr/server/etc/jetty-requestlog.xml               |  2 +-
 solr/server/etc/security.policy                    |  8 +--
 solr/server/resources/log4j2.xml                   |  8 +--
 .../configuration-guide/pages/config-sets.adoc     |  2 +-
 .../pages/package-manager-internals.adoc           |  4 +-
 .../configuration-guide/pages/package-manager.adoc |  4 +-
 .../pages/system-info-handler.adoc                 |  8 +--
 .../deployment-guide/pages/metrics-reporting.adoc  |  4 +-
 .../solr/common/cloud/ZkMaintenanceUtils.java      |  8 ++-
 .../java/org/apache/solr/common/util/EnvUtils.java | 57 ++++++++++++++++++++--
 .../DeprecatedSystemPropertyMappings.properties    | 21 ++++++++
 .../src/resources/EnvToSyspropMappings.properties  | 10 +---
 .../org/apache/solr/common/util/EnvUtilsTest.java  | 30 ++++++++++--
 .../src/java/org/apache/solr/SolrTestCase.java     | 14 +++---
 59 files changed, 259 insertions(+), 219 deletions(-)

diff --git a/dev-docs/ui/testing-and-deployment.adoc 
b/dev-docs/ui/testing-and-deployment.adoc
index b06b998b93a..b627112eeb3 100644
--- a/dev-docs/ui/testing-and-deployment.adoc
+++ b/dev-docs/ui/testing-and-deployment.adoc
@@ -127,8 +127,8 @@ more secure production configuration.
 
 Like other modules, the new UI is enabled with the jetty module parameter 
`--module=new-ui`.
 When using the Solr CLI, users can disable the new UI with
-`SOLR_ADMIN_UI_EXPERIMENTAL_DISABLED=true` or by disabling the entire UI with
-`SOLR_ADMIN_UI_DISABLED=true`.
+`SOLR_UI_EXPERIMENTAL_ENABLED=false` or by disabling all user interface 
features with
+`SOLR_UI_ENABLED=false`.
 
 ==== JVM
 
diff --git a/dev-tools/scripts/cloud.sh b/dev-tools/scripts/cloud.sh
index 9824fb3eea7..30271dc4ce8 100755
--- a/dev-tools/scripts/cloud.sh
+++ b/dev-tools/scripts/cloud.sh
@@ -336,7 +336,7 @@ start(){
     mkdir -p "${CLUSTER_WD}/n${i}"
     argsArray=(-c --solr-home $CLUSTER_WD_FULL/n${i} -z 
localhost:${ZK_PORT}/solr_${SAFE_DEST} -p 898${i} -m $MEMORY \
     -a "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=500${i} \
-    -Dsolr.log.dir=$CLUSTER_WD_FULL/n${i} $JVM_ARGS")
+    -Dsolr.logs.dir=$CLUSTER_WD_FULL/n${i} $JVM_ARGS")
     FINAL_COMMAND="${SOLR}/bin/solr ${argsArray[@]}"
     echo ${FINAL_COMMAND}
     ${SOLR}/bin/solr start "${argsArray[@]}"
diff --git a/gradle/ide/eclipse/run-solr-cloud.launch 
b/gradle/ide/eclipse/run-solr-cloud.launch
index c9d5dbbe9f4..685782ceabc 100644
--- a/gradle/ide/eclipse/run-solr-cloud.launch
+++ b/gradle/ide/eclipse/run-solr-cloud.launch
@@ -16,5 +16,5 @@
        <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" 
value="org.eclipse.jetty.start.Main"/>
        <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" 
value="--module=http"/>
        <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" 
value="@ECLIPSEPROJECTNAME@"/>
-       <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" 
value="-Xms512m &#13;&#10;-Djetty.port=8983&#13;&#10;-DSTOP.PORT=7983 
&#13;&#10;-DSTOP.KEY=solrrock&#13;&#10;-Dlog4j.configurationFile=&quot;file:${workspace_loc:@ECLIPSEPROJECTNAME@}/solr/server/resources/log4j2.xml&quot;&#13;&#10;-Djetty.home=&quot;${workspace_loc:@ECLIPSEPROJECTNAME@}/eclipse-build/solr-server&quot;&#13;&#10;-Djetty.base=&quot;${workspace_loc:@ECLIPSEPROJECTNAME@}/eclipse-build/solr-server&quot;&#13;&#10;-
 [...]
+       <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" 
value="-Xms512m &#13;&#10;-Djetty.port=8983&#13;&#10;-DSTOP.PORT=7983 
&#13;&#10;-DSTOP.KEY=solrrock&#13;&#10;-Dlog4j.configurationFile=&quot;file:${workspace_loc:@ECLIPSEPROJECTNAME@}/solr/server/resources/log4j2.xml&quot;&#13;&#10;-Djetty.home=&quot;${workspace_loc:@ECLIPSEPROJECTNAME@}/eclipse-build/solr-server&quot;&#13;&#10;-Djetty.base=&quot;${workspace_loc:@ECLIPSEPROJECTNAME@}/eclipse-build/solr-server&quot;&#13;&#10;-
 [...]
 </launchConfiguration>
diff --git a/gradle/ide/eclipse/run-solr.launch 
b/gradle/ide/eclipse/run-solr.launch
index 00f225dacc8..2cebe437425 100644
--- a/gradle/ide/eclipse/run-solr.launch
+++ b/gradle/ide/eclipse/run-solr.launch
@@ -16,5 +16,5 @@
        <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" 
value="org.eclipse.jetty.start.Main"/>
        <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" 
value="--module=http"/>
        <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" 
value="@ECLIPSEPROJECTNAME@"/>
-    <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" 
value="-Xms512m &#13;&#10;-Djetty.port=8983&#13;&#10;-DSTOP.PORT=7983 
&#13;&#10;-DSTOP.KEY=solrrock&#13;&#10;-Dlog4j.configurationFile=&quot;file:${workspace_loc:@ECLIPSEPROJECTNAME@}/solr/server/resources/log4j2.xml&quot;&#13;&#10;-Djetty.home=&quot;${workspace_loc:@ECLIPSEPROJECTNAME@}/eclipse-build/solr-server&quot;&#13;&#10;-Djetty.base=&quot;${workspace_loc:@ECLIPSEPROJECTNAME@}/eclipse-build/solr-server&quot;&#13;&#1
 [...]
+    <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" 
value="-Xms512m &#13;&#10;-Djetty.port=8983&#13;&#10;-DSTOP.PORT=7983 
&#13;&#10;-DSTOP.KEY=solrrock&#13;&#10;-Dlog4j.configurationFile=&quot;file:${workspace_loc:@ECLIPSEPROJECTNAME@}/solr/server/resources/log4j2.xml&quot;&#13;&#10;-Djetty.home=&quot;${workspace_loc:@ECLIPSEPROJECTNAME@}/eclipse-build/solr-server&quot;&#13;&#10;-Djetty.base=&quot;${workspace_loc:@ECLIPSEPROJECTNAME@}/eclipse-build/solr-server&quot;&#13;&#1
 [...]
 </launchConfiguration>
diff --git a/gradle/testing/randomization/policies/solr-tests.policy 
b/gradle/testing/randomization/policies/solr-tests.policy
index eaeb777ba4e..2d3246c6d9b 100644
--- a/gradle/testing/randomization/policies/solr-tests.policy
+++ b/gradle/testing/randomization/policies/solr-tests.policy
@@ -225,11 +225,11 @@ grant {
   permission java.io.FilePermission "${solr.data.home}", 
"read,write,delete,readlink";
   permission java.io.FilePermission "${solr.data.home}${/}-", 
"read,write,delete,readlink";
 
-  permission java.io.FilePermission "${solr.default.confdir}", 
"read,write,delete,readlink";
-  permission java.io.FilePermission "${solr.default.confdir}${/}-", 
"read,write,delete,readlink";
+  permission java.io.FilePermission "${solr.configset.default.confdir}", 
"read,write,delete,readlink";
+  permission java.io.FilePermission "${solr.configset.default.confdir}${/}-", 
"read,write,delete,readlink";
 
-  permission java.io.FilePermission "${solr.log.dir}", 
"read,write,delete,readlink";
-  permission java.io.FilePermission "${solr.log.dir}${/}-", 
"read,write,delete,readlink";
+  permission java.io.FilePermission "${solr.logs.dir}", 
"read,write,delete,readlink";
+  permission java.io.FilePermission "${solr.logs.dir}${/}-", 
"read,write,delete,readlink";
 
   permission java.io.FilePermission "${solr.allowPaths}", 
"read,write,delete,readlink";
   permission java.io.FilePermission "${solr.allowPaths}${/}-", 
"read,write,delete,readlink";
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index f209a8e43e1..1d36ccc138a 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -17,6 +17,8 @@ New Features
 * SOLR-14414: Introduce a new, experimental Admin UI that can be used aside 
the current Admin UI. The new module is
   loaded together with the existing Admin UI and available under the URL path 
/solr/compose. (Christos Malliaridis)
 
+* SOLR-17864: Standarized patterns for system property naming across Solr.  
i.e enable.packages is now solr.packages.enabled.  (janhoy, Eric Pugh)
+
 Improvements
 ---------------------
 
diff --git a/solr/benchmark/log4j2-bench.xml b/solr/benchmark/log4j2-bench.xml
index 628bfbcac64..c3b81a84ca5 100644
--- a/solr/benchmark/log4j2-bench.xml
+++ b/solr/benchmark/log4j2-bench.xml
@@ -31,8 +31,8 @@
 
     <RollingRandomAccessFile
         name="MainLogFile"
-        
fileName="${sys:solr.log.dir:-build/work/solr-logs}/${sys:solr.log.name:-solr}.log"
-        
filePattern="${sys:solr.log.dir:-build/work/solr-logs}/${sys:solr.log.name:-solr}.log.%i">
+        
fileName="${sys:solr.logs.dir:-build/work/solr-logs}/${sys:solr.log.name:-solr}.log"
+        
filePattern="${sys:solr.logs.dir:-build/work/solr-logs}/${sys:solr.log.name:-solr}.log.%i">
       <PatternLayout>
         <Pattern>
           %maxLen{%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p (%t) 
[%notEmpty{c:%X{collection}}%notEmpty{ s:%X{shard}}%notEmpty{ 
r:%X{replica}}%notEmpty{ x:%X{core}}] %c{1.}
@@ -48,8 +48,8 @@
 
     <RollingRandomAccessFile
         name="SlowLogFile"
-        
fileName="${sys:solr.log.dir:-build/work/solr-logs}/${sys:solr.log.name:-solr}_slow_requests.log"
-        
filePattern="${sys:solr.log.dir:-build/work/solr-logs}/${sys:solr.log.name:-solr}_slow_requests.log.%i">
+        
fileName="${sys:solr.logs.dir:-build/work/solr-logs}/${sys:solr.log.name:-solr}_slow_requests.log"
+        
filePattern="${sys:solr.logs.dir:-build/work/solr-logs}/${sys:solr.log.name:-solr}_slow_requests.log.%i">
       <PatternLayout>
         <Pattern>
           %maxLen{%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p (%t) 
[%notEmpty{c:%X{collection}}%notEmpty{ s:%X{shard}}%notEmpty{ 
r:%X{replica}}%notEmpty{ x:%X{core}}] %c{1.}
@@ -66,8 +66,8 @@
 
     <RollingRandomAccessFile
         name="RandomCountsFile"
-        
fileName="${sys:solr.log.dir:-build/work/solr-logs}/${sys:solr.log.name:-solr}_random_counts.log"
-        
filePattern="${sys:solr.log.dir:-build/work/solr-logs}/${sys:solr.log.name:-solr}_random_counts.log.%i">
+        
fileName="${sys:solr.logs.dir:-build/work/solr-logs}/${sys:solr.log.name:-solr}_random_counts.log"
+        
filePattern="${sys:solr.logs.dir:-build/work/solr-logs}/${sys:solr.log.name:-solr}_random_counts.log.%i">
       <PatternLayout>
         <Pattern>
           %maxLen{%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p (%t) 
[%notEmpty{c:%X{collection}}%notEmpty{ s:%X{shard}}%notEmpty{ 
r:%X{replica}}%notEmpty{ x:%X{core}}] %c{1.}
diff --git a/solr/benchmark/src/java/org/apache/solr/bench/BaseBenchState.java 
b/solr/benchmark/src/java/org/apache/solr/bench/BaseBenchState.java
index 0f401d7d6c8..0995323ff8e 100644
--- a/solr/benchmark/src/java/org/apache/solr/bench/BaseBenchState.java
+++ b/solr/benchmark/src/java/org/apache/solr/bench/BaseBenchState.java
@@ -103,7 +103,7 @@ public class BaseBenchState {
 
     workDir = System.getProperty("workBaseDir", "build/work");
 
-    System.setProperty("solr.log.dir", workDir + "/logs");
+    System.setProperty("solr.logs.dir", workDir + "/logs");
     System.setProperty("solr.log.name", benchmarkParams.id());
   }
 
diff --git 
a/solr/benchmark/src/java/org/apache/solr/bench/MiniClusterState.java 
b/solr/benchmark/src/java/org/apache/solr/bench/MiniClusterState.java
index 555463089fd..2dfce895ddc 100755
--- a/solr/benchmark/src/java/org/apache/solr/bench/MiniClusterState.java
+++ b/solr/benchmark/src/java/org/apache/solr/bench/MiniClusterState.java
@@ -212,7 +212,7 @@ public class MiniClusterState {
       System.setProperty("pkiHandlerPrivateKeyPath", "");
       System.setProperty("pkiHandlerPublicKeyPath", "");
 
-      System.setProperty("solr.default.confdir", 
"../server/solr/configsets/_default");
+      System.setProperty("solr.configset.default.confdir", 
"../server/solr/configsets/_default");
 
       this.random = new SplittableRandom(BaseBenchState.getRandomSeed());
 
diff --git a/solr/benchmark/src/test-files/log4j2.xml 
b/solr/benchmark/src/test-files/log4j2.xml
index f65aca5e456..983559c47c8 100644
--- a/solr/benchmark/src/test-files/log4j2.xml
+++ b/solr/benchmark/src/test-files/log4j2.xml
@@ -31,8 +31,8 @@
 
       <RollingRandomAccessFile
               name="MainLogFile"
-              
fileName="${sys:solr.log.dir:-build/work/solr-logs}/${sys:solr.log.name:-solr}.log"
-              
filePattern="${sys:solr.log.dir:-build/work/solr-logs}/${sys:solr.log.name:-solr}.log.%i">
+              
fileName="${sys:solr.logs.dir:-build/work/solr-logs}/${sys:solr.log.name:-solr}.log"
+              
filePattern="${sys:solr.logs.dir:-build/work/solr-logs}/${sys:solr.log.name:-solr}.log.%i">
           <PatternLayout>
               <Pattern>
                   %maxLen{%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p (%t) 
[%notEmpty{c:%X{collection}}%notEmpty{ s:%X{shard}}%notEmpty{ 
r:%X{replica}}%notEmpty{ x:%X{core}}] %c{1.}
@@ -48,8 +48,8 @@
 
       <RollingRandomAccessFile
               name="SlowLogFile"
-              
fileName="${sys:solr.log.dir:-build/work/solr-logs}/${sys:solr.log.name:-solr}_slow_requests.log"
-              
filePattern="${sys:solr.log.dir:-build/work/solr-logs}/${sys:solr.log.name:-solr}_slow_requests.log.%i">
+              
fileName="${sys:solr.logs.dir:-build/work/solr-logs}/${sys:solr.log.name:-solr}_slow_requests.log"
+              
filePattern="${sys:solr.logs.dir:-build/work/solr-logs}/${sys:solr.log.name:-solr}_slow_requests.log.%i">
           <PatternLayout>
               <Pattern>
                 %maxLen{%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p (%t) 
[%notEmpty{c:%X{collection}}%notEmpty{ s:%X{shard}}%notEmpty{ 
r:%X{replica}}%notEmpty{ x:%X{core}}] %c{1.}
@@ -65,7 +65,7 @@
 
     <RandomAccessFile
         name="RandomCountsFile"
-        
fileName="${sys:solr.log.dir:-build/work/solr-logs}/${sys:solr.log.name:-solr}_random_counts.log">
+        
fileName="${sys:solr.logs.dir:-build/work/solr-logs}/${sys:solr.log.name:-solr}_random_counts.log">
       <PatternLayout>
         <Pattern>
           %maxLen{%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p (%t) 
[%notEmpty{c:%X{collection}}%notEmpty{ s:%X{shard}}%notEmpty{ 
r:%X{replica}}%notEmpty{ x:%X{core}}] %c{1.}
diff --git a/solr/bin/solr b/solr/bin/solr
index 7249ec576c4..d9b0bacb4da 100755
--- a/solr/bin/solr
+++ b/solr/bin/solr
@@ -68,7 +68,7 @@ if [ $$ -ne $(ps -o pid='' -p $$ || echo 0) ] ; then
   exit 1
 fi
 
-# This helps with debugging when running bats tests but not the whole script 
is compliant yet
+# This helps with debugging when running bats tests however the whole script 
is not compliant yet
 # set -u
 # set -o pipefail
 
@@ -114,7 +114,7 @@ fi
 
 # Export variables we want to make visible to Solr sub-process
 for var in $(compgen -v); do
-  if [[ "$var" =~ 
^(SOLR_.*|DEFAULT_CONFDIR|ZK_.*|GCS_BUCKET|GCS_.*|S3_.*|OTEL_.*|AWS_.*)$ ]]; 
then
+  if [[ "$var" =~ ^(SOLR_.*|ZK_.*|GCS_BUCKET|GCS_.*|S3_.*|OTEL_.*|AWS_.*)$ ]]; 
then
     export "${var?}"
   fi
 done
@@ -316,10 +316,10 @@ if [ "${SOLR_GZIP_ENABLED:-true}" == "true" ]; then
 fi
 
 # Jetty configuration for new Admin UI
-if [ "${SOLR_ADMIN_UI_DISABLED:-false}" == "true" ] ||
-   [ "${SOLR_ADMIN_UI_EXPERIMENTAL_DISABLED:-false}" == "true" ]; then
-  # Do not enable new Admin UI
-  echo -e "New Admin UI not enabled"
+if [ "${SOLR_UI_ENABLED:-true}" == "false" ] ||
+   [ "${SOLR_UI_EXPERIMENTAL_ENABLED:-true}" == "false" ]; then
+  # Do not enable new Solr UI
+  echo -e "New Solr UI not enabled"
 else
   # Enable new Admin UI
   SOLR_JETTY_CONFIG+=("--module=new-ui")
@@ -863,14 +863,6 @@ if [[ -n "${SOLR_PLACEMENTPLUGIN_DEFAULT:-}" ]] ; then
   
SCRIPT_SOLR_OPTS+=("-Dsolr.placementplugin.default=$SOLR_PLACEMENTPLUGIN_DEFAULT")
 fi
 
-# Remote streaming and stream body
-if [ "${SOLR_ENABLE_REMOTE_STREAMING:-false}" == "true" ]; then
-  SCRIPT_SOLR_OPTS+=("-Dsolr.enableRemoteStreaming=true")
-fi
-if [ "${SOLR_ENABLE_STREAM_BODY:-false}" == "true" ]; then
-  SCRIPT_SOLR_OPTS+=("-Dsolr.enableStreamBody=true")
-fi
-
 : ${SOLR_SERVER_DIR:=$DEFAULT_SERVER_DIR}
 
 if [ ! -e "$SOLR_SERVER_DIR" ]; then
@@ -1024,9 +1016,6 @@ elif [[ $SOLR_HOME != /* ]]; then
   fi
 fi
 
-# Set the default configset dir to be bootstrapped as _default
-: "${DEFAULT_CONFDIR:="$SOLR_SERVER_DIR/solr/configsets/_default/conf"}"
-
 # This is quite hacky, but examples rely on a different log4j2.xml
 # so that we can write logs for examples to $SOLR_HOME/../logs
 : "${SOLR_LOGS_DIR:="$SOLR_SERVER_DIR/logs"}"
@@ -1163,14 +1152,6 @@ else
   SECURITY_MANAGER_OPTS=()
 fi
 
-# Enable Admin UI by default, and give the option for users to disable it
-if [ "${SOLR_ADMIN_UI_DISABLED:-false}" == "true" ]; then
-  SOLR_ADMIN_UI="-DdisableAdminUI=true"
-  echo -e "ADMIN UI Disabled"
-else
-  SOLR_ADMIN_UI="-DdisableAdminUI=false"
-fi
-
 JAVA_MEM_OPTS=()
 if [ -z "${SOLR_HEAP:-}" ] && [ -n "${SOLR_JAVA_MEM:-}" ]; then
   JAVA_MEM_OPTS=($SOLR_JAVA_MEM)
@@ -1220,17 +1201,10 @@ function start_solr() {
     GC_TUNE_ARR=($GC_TUNE) # Stuff the string from outside into first value of 
the array
   fi
 
-  if [ -n "${SOLR_WAIT_FOR_ZK:-}" ]; then
-    SCRIPT_SOLR_OPTS+=("-DwaitForZk=$SOLR_WAIT_FOR_ZK")
-  fi
-
   if [ -n "${SOLR_DATA_HOME:-}" ]; then
     SCRIPT_SOLR_OPTS+=("-Dsolr.data.home=$SOLR_DATA_HOME")
   fi
 
-  if [ -n "${SOLR_DELETE_UNKNOWN_CORES:-}" ]; then
-    SCRIPT_SOLR_OPTS+=("-Dsolr.deleteUnknownCores=$SOLR_DELETE_UNKNOWN_CORES")
-  fi
 
   # If SSL-related system props are set, add them to SCRIPT_SOLR_OPTS
   if [ "$SOLR_SSL_ENABLED" == "true" ]; then
@@ -1317,7 +1291,7 @@ function start_solr() {
 
   # shellcheck disable=SC2164
   SOLR_START_OPTS=('-server' "${JAVA_MEM_OPTS[@]}" "${GC_TUNE_ARR[@]}" 
"${GC_LOG_OPTS[@]}" "${IP_ACL_OPTS[@]}" \
-    "${REMOTE_JMX_OPTS[@]}" "${CLOUD_MODE_OPTS[@]}" 
-Dsolr.log.dir="$SOLR_LOGS_DIR" \
+    "${REMOTE_JMX_OPTS[@]}" "${CLOUD_MODE_OPTS[@]}" 
-Dsolr.logs.dir="$SOLR_LOGS_DIR" \
     "-Djetty.port=$SOLR_PORT" "-DSTOP.PORT=$stop_port" "-DSTOP.KEY=$STOP_KEY" \
     "-Djava.io.tmpdir=$(cd "${TMPDIR:-${TEMP:-${TMP:-/tmp}}}"; pwd -P)" \
     # '-OmitStackTraceInFastThrow' ensures stack traces in errors,
@@ -1327,7 +1301,7 @@ function start_solr() {
     # OOME is thrown. Program operation after OOME is unpredictable.
     "-XX:+CrashOnOutOfMemoryError" 
"-XX:ErrorFile=${SOLR_LOGS_DIR}/jvm_crash_%p.log" \
     "-Djetty.home=$SOLR_SERVER_DIR" "-Dsolr.solr.home=$SOLR_HOME" 
"-Dsolr.install.dir=$SOLR_TIP" "-Dsolr.install.symDir=$SOLR_TIP_SYM" \
-    "-Dsolr.default.confdir=$DEFAULT_CONFDIR" "${LOG4J_CONFIG[@]}" 
"${SCRIPT_SOLR_OPTS[@]}" "${SECURITY_MANAGER_OPTS[@]}" "${SOLR_ADMIN_UI}" 
"${SOLR_OPTS[@]}")
+    "${LOG4J_CONFIG[@]}" "${SCRIPT_SOLR_OPTS[@]}" 
"${SECURITY_MANAGER_OPTS[@]}" "${SOLR_OPTS[@]}")
 
   mk_writable_dir "$SOLR_LOGS_DIR" "Logs"
   if [[ -n "${SOLR_HEAP_DUMP_DIR:-}" ]]; then
diff --git a/solr/bin/solr.cmd b/solr/bin/solr.cmd
index ecb04647ad5..d8c3f5d4561 100755
--- a/solr/bin/solr.cmd
+++ b/solr/bin/solr.cmd
@@ -194,9 +194,9 @@ IF "%SOLR_GZIP_ENABLED%"=="true" (
 )
 
 REM Jetty configuration for new Admin UI
-IF "%SOLR_ADMIN_UI_DISABLED%"=="true" (
+IF "%SOLR_UI_ENABLED%"=="false" (
   REM Do not load jetty-configuration if Admin UI explicitly disabled
-) ELSE IF "%SOLR_ADMIN_UI_EXPERIMENTAL_DISABLED%"=="true" (
+) ELSE IF "%SOLR_UI_EXPERIMENTAL_ENABLED%"=="false" (
   REM Do not load jetty-configuration if new Admin UI explicitly disabled
 ) ELSE (
   REM Enable new Admin UI by loading jetty-configuration
@@ -728,14 +728,6 @@ IF DEFINED SOLR_PLACEMENTPLUGIN_DEFAULT (
   set "SCRIPT_SOLR_OPTS=%SCRIPT_SOLR_OPTS% 
-Dsolr.placementplugin.default=%SOLR_PLACEMENTPLUGIN_DEFAULT%"
 )
 
-REM Remote streaming and stream body
-IF "%SOLR_ENABLE_REMOTE_STREAMING%"=="true" (
-  set "SCRIPT_SOLR_OPTS=%SCRIPT_SOLR_OPTS% -Dsolr.enableRemoteStreaming=true"
-)
-IF "%SOLR_ENABLE_STREAM_BODY%"=="true" (
-  set "SCRIPT_SOLR_OPTS=%SCRIPT_SOLR_OPTS% -Dsolr.enableStreamBody=true"
-)
-
 IF "%SOLR_SERVER_DIR%"=="" set "SOLR_SERVER_DIR=%DEFAULT_SERVER_DIR%"
 
 IF NOT EXIST "%SOLR_SERVER_DIR%" (
@@ -925,14 +917,6 @@ IF "%SOLR_MODE%"=="solrcloud" (
 
   set "CLOUD_MODE_OPTS=-DzkClientTimeout=!ZK_CLIENT_TIMEOUT!"
 
-  IF NOT "%SOLR_WAIT_FOR_ZK%"=="" (
-    set "CLOUD_MODE_OPTS=!CLOUD_MODE_OPTS! -DwaitForZk=%SOLR_WAIT_FOR_ZK%"
-  )
-
-  IF NOT "%SOLR_DELETE_UNKNOWN_CORES%"=="" (
-    set "CLOUD_MODE_OPTS=!CLOUD_MODE_OPTS! 
-Dsolr.deleteUnknownCores=%SOLR_DELETE_UNKNOWN_CORES%"
-  )
-
   IF NOT "%ZK_HOST%"=="" (
     set "CLOUD_MODE_OPTS=!CLOUD_MODE_OPTS! -DzkHost=%ZK_HOST%"
   ) ELSE (
@@ -1006,13 +990,6 @@ IF "%SOLR_SECURITY_MANAGER_ENABLED%"=="true" (
 -Dsolr.internal.network.permission=*
 )
 
-REM Enable ADMIN UI by default, and give the option for users to disable it
-IF "%SOLR_ADMIN_UI_DISABLED%"=="true" (
-  set DISABLE_ADMIN_UI="true"
-) else (
-  set DISABLE_ADMIN_UI="false"
-)
-
 IF NOT "%SOLR_HEAP%"=="" set SOLR_JAVA_MEM=-Xms%SOLR_HEAP% -Xmx%SOLR_HEAP%
 IF "%SOLR_JAVA_MEM%"=="" set SOLR_JAVA_MEM=-Xms512m -Xmx512m
 IF "%SOLR_JAVA_STACK_SIZE%"=="" set SOLR_JAVA_STACK_SIZE=-Xss256k
@@ -1097,7 +1074,6 @@ REM OOME is thrown. Program operation after OOME is 
unpredictable.
 set START_OPTS=%START_OPTS% -XX:+CrashOnOutOfMemoryError
 set START_OPTS=%START_OPTS% -XX:ErrorFile="%SOLR_LOGS_DIR%\jvm_crash_%%p.log"
 set START_OPTS=%START_OPTS% !GC_TUNE! %GC_LOG_OPTS%
-set START_OPTS=%START_OPTS% -DdisableAdminUI=%DISABLE_ADMIN_UI%
 IF NOT "!CLOUD_MODE_OPTS!"=="" set "START_OPTS=%START_OPTS% !CLOUD_MODE_OPTS!"
 IF NOT "!IP_ACL_OPTS!"=="" set "START_OPTS=%START_OPTS% !IP_ACL_OPTS!"
 IF NOT "!REMOTE_JMX_OPTS!"=="" set "START_OPTS=%START_OPTS% !REMOTE_JMX_OPTS!"
@@ -1114,7 +1090,7 @@ IF "%SOLR_SSL_ENABLED%"=="true" (
 set SOLR_LOGS_DIR_QUOTED="%SOLR_LOGS_DIR%"
 set SOLR_DATA_HOME_QUOTED="%SOLR_DATA_HOME%"
 
-set "START_OPTS=%START_OPTS% -Dsolr.log.dir=%SOLR_LOGS_DIR_QUOTED%"
+set "START_OPTS=%START_OPTS% -Dsolr.logs.dir=%SOLR_LOGS_DIR_QUOTED%"
 IF NOT "%SOLR_DATA_HOME%"=="" set "START_OPTS=%START_OPTS% 
-Dsolr.data.home=%SOLR_DATA_HOME_QUOTED%"
 IF NOT DEFINED LOG4J_CONFIG set 
"LOG4J_CONFIG=%SOLR_SERVER_DIR%\resources\log4j2.xml"
 
@@ -1144,15 +1120,13 @@ IF NOT EXIST "%SOLR_SERVER_DIR%\tmp" (
   mkdir "%SOLR_SERVER_DIR%\tmp"
 )
 
-IF "%DEFAULT_CONFDIR%"=="" set 
"DEFAULT_CONFDIR=%SOLR_SERVER_DIR%\solr\configsets\_default\conf"
-
 IF "%FG%"=="1" (
   REM run solr in the foreground
   title "Solr-%SOLR_PORT%"
   echo %SOLR_PORT%>"%SOLR_TIP%"\bin\solr-%SOLR_PORT%.port
   "%JAVA%" %SERVEROPT% %SOLR_JAVA_MEM% %START_OPTS% ^
     -Dlog4j.configurationFile="%LOG4J_CONFIG%" -DSTOP.PORT=!STOP_PORT! 
-DSTOP.KEY=%STOP_KEY% ^
-    -Dsolr.solr.home="%SOLR_HOME%" -Dsolr.install.dir="%SOLR_TIP%" 
-Dsolr.install.symDir="%SOLR_TIP%" -Dsolr.default.confdir="%DEFAULT_CONFDIR%" ^
+    -Dsolr.solr.home="%SOLR_HOME%" -Dsolr.install.dir="%SOLR_TIP%" 
-Dsolr.install.symDir="%SOLR_TIP%" ^
     -Djetty.port=%SOLR_PORT% -Djetty.home="%SOLR_SERVER_DIR%" ^
     -Djava.io.tmpdir="%SOLR_SERVER_DIR%\tmp" -jar start.jar 
%SOLR_JETTY_CONFIG% "%SOLR_JETTY_ADDL_CONFIG%"
 ) ELSE (
@@ -1160,7 +1134,7 @@ IF "%FG%"=="1" (
     "%JAVA%" %SERVEROPT% %SOLR_JAVA_MEM% %START_OPTS% ^
     -Dlog4j.configurationFile="%LOG4J_CONFIG%" -DSTOP.PORT=!STOP_PORT! 
-DSTOP.KEY=%STOP_KEY% ^
     -Dsolr.log.muteconsole ^
-    -Dsolr.solr.home="%SOLR_HOME%" -Dsolr.install.dir="%SOLR_TIP%" 
-Dsolr.install.symDir="%SOLR_TIP%" -Dsolr.default.confdir="%DEFAULT_CONFDIR%" ^
+    -Dsolr.solr.home="%SOLR_HOME%" -Dsolr.install.dir="%SOLR_TIP%" 
-Dsolr.install.symDir="%SOLR_TIP%" ^
     -Djetty.port=%SOLR_PORT% -Djetty.home="%SOLR_SERVER_DIR%" ^
     -Djava.io.tmpdir="%SOLR_SERVER_DIR%\tmp" -jar start.jar 
%SOLR_JETTY_CONFIG% "%SOLR_JETTY_ADDL_CONFIG%" > 
"!SOLR_LOGS_DIR!\solr-%SOLR_PORT%-console.log"
   echo %SOLR_PORT%>"%SOLR_TIP%"\bin\solr-%SOLR_PORT%.port
@@ -1169,7 +1143,7 @@ IF "%FG%"=="1" (
     set SOLR_START_WAIT=180
   )
   REM now wait to see Solr come online ...
-  "%JAVA%" %SOLR_SSL_OPTS% %AUTHC_OPTS% %SOLR_ZK_CREDS_AND_ACLS% 
%SOLR_TOOL_OPTS% -Dsolr.install.dir="%SOLR_TIP%" 
-Dsolr.default.confdir="%DEFAULT_CONFDIR%"^
+  "%JAVA%" %SOLR_SSL_OPTS% %AUTHC_OPTS% %SOLR_ZK_CREDS_AND_ACLS% 
%SOLR_TOOL_OPTS% -Dsolr.install.dir="%SOLR_TIP%" ^
     
-Dlog4j.configurationFile="file:///%DEFAULT_SERVER_DIR%\resources\log4j2-console.xml"
 ^
     -classpath 
"%DEFAULT_SERVER_DIR%\solr-webapp\webapp\WEB-INF\lib\*;%DEFAULT_SERVER_DIR%\lib\ext\*"
 ^
     org.apache.solr.cli.SolrCLI status --max-wait-secs !SOLR_START_WAIT!
diff --git a/solr/bin/solr.in.cmd b/solr/bin/solr.in.cmd
index 60d8aaeac0a..9e01056cf69 100755
--- a/solr/bin/solr.in.cmd
+++ b/solr/bin/solr.in.cmd
@@ -69,7 +69,7 @@ REM for production SolrCloud environments to control the 
hostname exposed to clu
 REM set SOLR_HOST=192.168.1.1
 
 REM By default Solr will try to connect to Zookeeper with 30 seconds in 
timeout; override the timeout if needed
-REM set SOLR_WAIT_FOR_ZK=30
+REM set SOLR_CLOUD_WAIT_FOR_ZK_SECONDS=30
 
 REM By default Solr will log a warning for cores that are not registered in 
Zookeeper at startup
 REM but otherwise ignore them. This protects against misconfiguration (e.g. 
connecting to the
@@ -222,14 +222,14 @@ REM This is experimental!
 REM set SOLR_SECURITY_MANAGER_ENABLED=true
 
 REM This variable provides you with the option to disable the Admin UI. if you 
uncomment the variable below and
-REM change the value to true. The option is configured as a system property as 
defined in SOLR_START_OPTS in the start
+REM change the value to false. The option is configured as a system property 
as defined in SOLR_START_OPTS in the start
 REM scripts.
-REM set SOLR_ADMIN_UI_DISABLED=false
+REM set SOLR_UI_ENABLED=true
 
 REM This variable provides you with the option to disable the new experimental 
Admin UI. If you uncomment the variable
-REM below and change the value to true, Jetty will not load the new-ui module 
which update the CSP directive for the
-REM new UI endpoints. This property is ignored if SOLR_ADMIN_UI_DISABLED is 
true.
-REM set SOLR_ADMIN_UI_EXPERIMENTAL_DISABLED=false
+REM below and change the value to false, Jetty will not load the new-ui module 
which update the CSP directive for the
+REM new UI endpoints. This property is ignored if SOLR_UI_ENABLED is false.
+REM set SOLR_UI_EXPERIMENTAL_ENABLED=false
 
 REM Solr is by default allowed to read and write data from/to SOLR_HOME and a 
few other well defined locations
 REM Sometimes it may be necessary to place a core or a backup on a different 
location or a different disk
diff --git a/solr/bin/solr.in.sh b/solr/bin/solr.in.sh
index 4692343d85f..38a98197816 100644
--- a/solr/bin/solr.in.sh
+++ b/solr/bin/solr.in.sh
@@ -75,7 +75,7 @@
 #SOLR_HOST="192.168.1.1"
 
 # By default Solr will try to connect to Zookeeper with 30 seconds in timeout; 
override the timeout if needed
-#SOLR_WAIT_FOR_ZK="30"
+#SOLR_CLOUD_WAIT_FOR_ZK_SECONDS="30"
 
 # By default Solr will log a warning for cores that are not registered in 
Zookeeper at startup
 # but otherwise ignore them. This protects against misconfiguration (e.g. 
connecting to the
@@ -248,14 +248,14 @@
 #SOLR_SECURITY_MANAGER_ENABLED=true
 
 # This variable provides you with the option to disable the Admin UI. If you 
uncomment the variable below and
-# change the value to true. The option is configured as a system property as 
defined in SOLR_START_OPTS in the start
+# change the value to false. The option is configured as a system property as 
defined in SOLR_START_OPTS in the start
 # scripts.
-# SOLR_ADMIN_UI_DISABLED=false
+# SOLR_UI_ENABLED=true
 
 # This variable provides you with the option to disable the new experimental 
Admin UI. If you uncomment the variable
-# below and change the value to true, Jetty will not load the new-ui module 
which update the CSP directive for the
-# new UI endpoints. This property is ignored if SOLR_ADMIN_UI_DISABLED is true.
-# SOLR_ADMIN_UI_EXPERIMENTAL_DISABLED=false
+# below and change the value to false, Jetty will not load the new-ui module 
which update the CSP directive for the
+# new UI endpoints. This property is ignored if SOLR_UI_ENABLED is false.
+# SOLR_UI_EXPERIMENTAL_ENABLED=false
 
 # Solr is by default allowed to read and write data from/to SOLR_HOME and a 
few other well defined locations
 # Sometimes it may be necessary to place a core or a backup on a different 
location or a different disk
diff --git a/solr/core/src/java/org/apache/solr/cli/PackageTool.java 
b/solr/core/src/java/org/apache/solr/cli/PackageTool.java
index 704d4c008c8..f715a20cd13 100644
--- a/solr/core/src/java/org/apache/solr/cli/PackageTool.java
+++ b/solr/core/src/java/org/apache/solr/cli/PackageTool.java
@@ -340,7 +340,7 @@ public class PackageTool extends ToolBase {
         "Note: (a) Please add '--solr-url http://host:port' parameter if 
needed (usually on Windows).");
     format(
         sb,
-        "      (b) Please make sure that all Solr nodes are started with 
'-Denable.packages=true' parameter.");
+        "      (b) Please make sure that all Solr nodes are started with 
'-solr.packages.enabled=true' parameter.");
     format(sb, "\n");
     format(sb, "List of options:");
     return sb.toString();
diff --git a/solr/core/src/java/org/apache/solr/core/ConfigSetService.java 
b/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
index bffce6483de..0d737c27d61 100644
--- a/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
+++ b/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
@@ -112,9 +112,9 @@ public abstract class ConfigSetService {
       Path configDirPath = getDefaultConfigDirPath();
       if (configDirPath == null) {
         log.warn(
-            "The _default configset could not be uploaded. Please provide 
'solr.default.confdir' parameter that points to a configset {} {}",
-            "intended to be the default. Current 'solr.default.confdir' 
value:",
-            
System.getProperty(SolrDispatchFilter.SOLR_DEFAULT_CONFDIR_ATTRIBUTE));
+            "The _default configset could not be uploaded. Please provide 
'solr.configset.default.confdir' parameter that points to a configset {} {}",
+            "intended to be the default. Current 
'solr.configset.default.confdir' value:",
+            
System.getProperty(SolrDispatchFilter.SOLR_CONFIGSET_DEFAULT_CONFDIR_ATTRIBUTE));
       } else {
         this.uploadConfig(ConfigSetsHandler.DEFAULT_CONFIGSET_NAME, 
configDirPath);
       }
@@ -136,14 +136,15 @@ public abstract class ConfigSetService {
 
   /**
    * Gets the absolute filesystem path of the _default configset to bootstrap 
from. First tries the
-   * sysprop "solr.default.confdir". If not found, tries to find the _default 
dir relative to the
-   * sysprop "solr.install.dir". Returns null if not found anywhere.
+   * sysprop "solr.configset.default.confdir". If not found, tries to find the 
_default dir relative
+   * to the sysprop "solr.install.dir". Returns null if not found anywhere.
    *
    * @lucene.internal
-   * @see SolrDispatchFilter#SOLR_DEFAULT_CONFDIR_ATTRIBUTE
+   * @see SolrDispatchFilter#SOLR_CONFIGSET_DEFAULT_CONFDIR_ATTRIBUTE
    */
   public static Path getDefaultConfigDirPath() {
-    String confDir = 
System.getProperty(SolrDispatchFilter.SOLR_DEFAULT_CONFDIR_ATTRIBUTE);
+    String confDir =
+        
System.getProperty(SolrDispatchFilter.SOLR_CONFIGSET_DEFAULT_CONFDIR_ATTRIBUTE);
     if (confDir != null) {
       Path path = Path.of(confDir);
       if (Files.exists(path)) {
diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java 
b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
index db5c97cc921..5a3eda738b6 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -1807,7 +1807,8 @@ public class CoreContainer {
         // this mostly happens when the core is deleted when this node is down
         // but it can also happen if connecting to the wrong zookeeper
         final boolean deleteUnknownCores =
-            Boolean.parseBoolean(System.getProperty("solr.deleteUnknownCores", 
"false"));
+            Boolean.parseBoolean(
+                
System.getProperty("solr.cloud.startup.delete.unknown.cores.enabled", "false"));
         log.error(
             "SolrCore {} in {} is not in cluster state.{}",
             dcore.getName(),
diff --git a/solr/core/src/java/org/apache/solr/core/NodeConfig.java 
b/solr/core/src/java/org/apache/solr/core/NodeConfig.java
index 1dcdc896d35..91c14eb72ad 100644
--- a/solr/core/src/java/org/apache/solr/core/NodeConfig.java
+++ b/solr/core/src/java/org/apache/solr/core/NodeConfig.java
@@ -248,10 +248,11 @@ public class NodeConfig {
     //  ZkFailoverTest test case...
     String zkHost = nodeProperties.getProperty(SolrXmlConfig.ZK_HOST);
     if (StrUtils.isNotNullOrEmpty(zkHost)) {
-      int startUpZkTimeOut = 1000 * Integer.getInteger("waitForZk", 0);
-      if (startUpZkTimeOut == 0) {
-        startUpZkTimeOut = SolrZkClientTimeout.DEFAULT_ZK_CLIENT_TIMEOUT;
-      }
+      int startUpZkTimeOut =
+          1000
+              * Integer.getInteger(
+                  "solr.cloud.wait.for.zk.seconds", 
SolrZkClientTimeout.DEFAULT_ZK_CLIENT_TIMEOUT);
+
       try (SolrZkClient zkClient =
           new SolrZkClient.Builder()
               .withUrl(zkHost)
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackageAPI.java 
b/solr/core/src/java/org/apache/solr/pkg/PackageAPI.java
index aa5ca5d9564..aaa12ef5a87 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackageAPI.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageAPI.java
@@ -62,11 +62,11 @@ import org.slf4j.LoggerFactory;
 
 /** This implements the public end points (/api/cluster/package) of package 
API. */
 public class PackageAPI {
-  public final boolean enablePackages = 
EnvUtils.getPropertyAsBool("enable.packages", false);
+  public final boolean enablePackages = 
EnvUtils.getPropertyAsBool("solr.packages.enabled", false);
   private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
   public static final String ERR_MSG =
-      "Package loading is not enabled , Start your nodes with 
-Denable.packages=true";
+      "Package loading is not enabled , Start your nodes with 
-Dsolr.packages.enabled=true";
 
   final CoreContainer coreContainer;
   private final ObjectMapper mapper = 
SolrJacksonAnnotationInspector.createObjectMapper();
diff --git 
a/solr/core/src/java/org/apache/solr/servlet/CoreContainerProvider.java 
b/solr/core/src/java/org/apache/solr/servlet/CoreContainerProvider.java
index 009bba8dc56..160effef95f 100644
--- a/solr/core/src/java/org/apache/solr/servlet/CoreContainerProvider.java
+++ b/solr/core/src/java/org/apache/solr/servlet/CoreContainerProvider.java
@@ -295,7 +295,7 @@ public class CoreContainerProvider implements 
ServletContextListener {
               "Solr typically starts with \"-XX:+CrashOnOutOfMemoryError\" 
that will crash on any OutOfMemoryError exception. "
                   + "Unable to get the specific file due to an exception."
                   + "The cause of the OOME will be logged in a crash file in 
the logs directory: %s",
-              System.getProperty("solr.log.dir"));
+              System.getProperty("solr.logs.dir"));
       log.info(logMessage, e);
     }
   }
diff --git a/solr/core/src/java/org/apache/solr/servlet/LoadAdminUiServlet.java 
b/solr/core/src/java/org/apache/solr/servlet/LoadAdminUiServlet.java
index 5ea82e46b9d..bbbd9166c51 100644
--- a/solr/core/src/java/org/apache/solr/servlet/LoadAdminUiServlet.java
+++ b/solr/core/src/java/org/apache/solr/servlet/LoadAdminUiServlet.java
@@ -39,19 +39,19 @@ import org.apache.solr.core.SolrCore;
  */
 public final class LoadAdminUiServlet extends HttpServlet {
 
-  // check system properties for whether or not admin UI is disabled, default 
is false
-  private static final boolean disabled =
-      Boolean.parseBoolean(System.getProperty("disableAdminUI", "false"));
+  // check system properties for whether the admin UI is disabled, default is 
false
+  private static final boolean uiEnabled =
+      Boolean.parseBoolean(System.getProperty("solr.ui.enabled", "true"));
   // list of comma separated URLs to inject into the CSP connect-src directive
   public static final String SYSPROP_CSP_CONNECT_SRC_URLS = 
"solr.ui.headers.csp.connect-src.urls";
 
   @Override
   public void doGet(HttpServletRequest request, HttpServletResponse response) 
throws IOException {
-    if (disabled) {
+    if (!uiEnabled) {
       response.sendError(
           404,
-          "Solr Admin UI is disabled. To enable it, change the default value 
of SOLR_ADMIN_UI_"
-              + "ENABLED in bin/solr.in.sh or solr.in.cmd.");
+          "Solr Admin UI is disabled. To enable it, change the value of 
SOLR_UI_ENABLED"
+              + " in bin/solr.in.sh or solr.in.cmd.");
       return;
     }
     request = ServletUtils.closeShield(request);
diff --git a/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java 
b/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
index b62479bad77..632c8aef504 100644
--- a/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
+++ b/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
@@ -113,7 +113,8 @@ public class SolrDispatchFilter extends HttpFilter 
implements PathExcluder {
 
   public static final String SOLR_INSTALL_DIR_ATTRIBUTE = "solr.install.dir";
 
-  public static final String SOLR_DEFAULT_CONFDIR_ATTRIBUTE = 
"solr.default.confdir";
+  public static final String SOLR_CONFIGSET_DEFAULT_CONFDIR_ATTRIBUTE =
+      "solr.configset.default.confdir";
 
   public static final String SOLR_LOG_MUTECONSOLE = "solr.log.muteconsole";
 
diff --git a/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java 
b/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java
index aeccc342059..34d18e57962 100644
--- a/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java
+++ b/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java
@@ -110,8 +110,8 @@ public class SolrRequestParsers {
       formUploadLimitKB = globalConfig.getFormUploadLimitKB();
 
       // security risks; disabled by default
-      enableRemoteStreams = Boolean.getBoolean("solr.enableRemoteStreaming");
-      enableStreamBody = Boolean.getBoolean("solr.enableStreamBody");
+      enableRemoteStreams = 
Boolean.getBoolean("solr.requests.streaming.remote.enabled");
+      enableStreamBody = 
Boolean.getBoolean("solr.requests.streaming.body.enabled");
 
       // Let this filter take care of /select?xxx format
 
diff --git a/solr/core/src/java/org/apache/solr/util/StartupLoggingUtils.java 
b/solr/core/src/java/org/apache/solr/util/StartupLoggingUtils.java
index 79047a502e3..73ddc50fe3d 100644
--- a/solr/core/src/java/org/apache/solr/util/StartupLoggingUtils.java
+++ b/solr/core/src/java/org/apache/solr/util/StartupLoggingUtils.java
@@ -47,8 +47,8 @@ public final class StartupLoggingUtils {
 
   /** Checks whether mandatory log dir is given */
   public static void checkLogDir() {
-    if (EnvUtils.getProperty("solr.log.dir") == null) {
-      log.error("Missing Java Option solr.log.dir. Logging may be missing or 
incomplete.");
+    if (EnvUtils.getProperty("solr.logs.dir") == null) {
+      log.error("Missing Java Option solr.logs.dir. Logging may be missing or 
incomplete.");
     }
   }
 
diff --git a/solr/core/src/test/org/apache/solr/cli/PackageToolTest.java 
b/solr/core/src/test/org/apache/solr/cli/PackageToolTest.java
index 47f3f345f73..9d777620baf 100644
--- a/solr/core/src/test/org/apache/solr/cli/PackageToolTest.java
+++ b/solr/core/src/test/org/apache/solr/cli/PackageToolTest.java
@@ -61,7 +61,7 @@ public class PackageToolTest extends SolrCloudTestCase {
 
   @BeforeClass
   public static void setupClusterWithSecurityEnabled() throws Exception {
-    System.setProperty("enable.packages", "true");
+    System.setProperty("solr.packages.enabled", "true");
 
     configureCluster(2)
         .addConfig(
@@ -83,7 +83,7 @@ public class PackageToolTest extends SolrCloudTestCase {
         repositoryServer.stop();
       }
     } finally {
-      System.clearProperty("enable.packages");
+      System.clearProperty("solr.packages.enabled");
     }
   }
 
diff --git a/solr/core/src/test/org/apache/solr/cli/TestSolrCLIRunExample.java 
b/solr/core/src/test/org/apache/solr/cli/TestSolrCLIRunExample.java
index 98f98456d7e..c57f22c23f4 100644
--- a/solr/core/src/test/org/apache/solr/cli/TestSolrCLIRunExample.java
+++ b/solr/core/src/test/org/apache/solr/cli/TestSolrCLIRunExample.java
@@ -214,7 +214,7 @@ public class TestSolrCLIRunExample extends SolrTestCaseJ4 {
 
       System.setProperty("host", "localhost");
       System.setProperty("jetty.port", String.valueOf(port));
-      System.setProperty("solr.log.dir", 
createTempDir("solr_logs").toString());
+      System.setProperty("solr.logs.dir", 
createTempDir("solr_logs").toString());
 
       standaloneSolr = new JettySolrRunner(solrHomeDir.toString(), port);
       Thread bg =
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/DeleteInactiveReplicaTest.java 
b/solr/core/src/test/org/apache/solr/cloud/DeleteInactiveReplicaTest.java
index 2d1b3564527..93ced0eeca1 100644
--- a/solr/core/src/test/org/apache/solr/cloud/DeleteInactiveReplicaTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/DeleteInactiveReplicaTest.java
@@ -48,12 +48,12 @@ public class DeleteInactiveReplicaTest extends 
SolrCloudTestCase {
 
   @AfterClass
   public static void reset() {
-    System.setProperty("solr.deleteUnknownCores", "false");
+    System.setProperty("solr.cloud.startup.delete.unknown.cores.enabled", 
"false");
   }
 
   @Test
   public void deleteInactiveReplicaTest() throws Exception {
-    System.setProperty("solr.deleteUnknownCores", "true");
+    System.setProperty("solr.cloud.startup.delete.unknown.cores.enabled", 
"true");
 
     String collectionName = "delDeadColl";
     int replicationFactor = 2;
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java 
b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
index 40e56159dcf..cc42e9eaf73 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
@@ -1670,12 +1670,12 @@ public class TestConfigSetsAPI extends 
SolrCloudTestCase {
    * the real directory which matches what {@link ZkController} finds and uses 
to bootstrap ZK in
    * cloud based tests.
    *
-   * <p>This assumes the {@link 
SolrDispatchFilter#SOLR_DEFAULT_CONFDIR_ATTRIBUTE} system property
-   * has not been externally set in the environment where this test is being 
run -- which should
-   * <b>never</b> be the case, since it would prevent the test-framework from 
using {@link
+   * <p>This assumes the {@link 
SolrDispatchFilter#SOLR_CONFIGSET_DEFAULT_CONFDIR_ATTRIBUTE} system
+   * property has not been externally set in the environment where this test 
is being run -- which
+   * should <b>never</b> be the case, since it would prevent the 
test-framework from using {@link
    * ExternalPaths#DEFAULT_CONFIGSET}
    *
-   * @see SolrDispatchFilter#SOLR_DEFAULT_CONFDIR_ATTRIBUTE
+   * @see SolrDispatchFilter#SOLR_CONFIGSET_DEFAULT_CONFDIR_ATTRIBUTE
    * @see #beforeSolrTestCase
    * @see ConfigSetService#getDefaultConfigDirPath
    */
diff --git a/solr/core/src/test/org/apache/solr/cloud/ZkFailoverTest.java 
b/solr/core/src/test/org/apache/solr/cloud/ZkFailoverTest.java
index d9dceb79614..e26d0fb45f4 100644
--- a/solr/core/src/test/org/apache/solr/cloud/ZkFailoverTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/ZkFailoverTest.java
@@ -47,7 +47,7 @@ public class ZkFailoverTest extends SolrCloudTestCase {
 
   @AfterClass
   public static void resetWaitForZk() {
-    System.setProperty("waitForZk", "30");
+    System.setProperty("solr.cloud.wait.for.zk.seconds", "30");
   }
 
   public void testRestartZkWhenClusterDown() throws Exception {
@@ -58,12 +58,12 @@ public class ZkFailoverTest extends SolrCloudTestCase {
     zkTestServer = cluster.getZkServer();
 
     // This attempt will fail since it will time out after 1 second
-    System.setProperty("waitForZk", "1");
+    System.setProperty("solr.cloud.wait.for.zk.seconds", "1");
     restartSolrAndZk();
     waitForLiveNodes(0);
 
     // This attempt will succeed since there will be enough time to connect
-    System.setProperty("waitForZk", "20");
+    System.setProperty("solr.cloud.wait.for.zk.seconds", "20");
     restartSolrAndZk();
     waitForLiveNodes(cluster.getJettySolrRunners().size());
     waitForState("Timeout waiting for " + coll, coll, clusterShape(2, 2));
diff --git 
a/solr/core/src/test/org/apache/solr/cluster/events/ClusterEventProducerTest.java
 
b/solr/core/src/test/org/apache/solr/cluster/events/ClusterEventProducerTest.java
index b3006d2da8e..d2e3ded32ea 100644
--- 
a/solr/core/src/test/org/apache/solr/cluster/events/ClusterEventProducerTest.java
+++ 
b/solr/core/src/test/org/apache/solr/cluster/events/ClusterEventProducerTest.java
@@ -67,7 +67,7 @@ public class ClusterEventProducerTest extends 
SolrCloudTestCase {
   @Override
   @Before
   public void setUp() throws Exception {
-    System.setProperty("enable.packages", "true");
+    System.setProperty("solr.packages.enabled", "true");
     super.setUp();
     cluster.deleteAllCollections();
     eventsListener = new AllEventsListener();
@@ -88,7 +88,7 @@ public class ClusterEventProducerTest extends 
SolrCloudTestCase {
 
   @After
   public void teardown() throws Exception {
-    System.clearProperty("enable.packages");
+    System.clearProperty("solr.packages.enabled");
     if (eventsListener != null) {
       cluster
           .getOpenOverseer()
diff --git 
a/solr/core/src/test/org/apache/solr/filestore/TestDistribFileStore.java 
b/solr/core/src/test/org/apache/solr/filestore/TestDistribFileStore.java
index 21a4080a6d6..f1cca81da47 100644
--- a/solr/core/src/test/org/apache/solr/filestore/TestDistribFileStore.java
+++ b/solr/core/src/test/org/apache/solr/filestore/TestDistribFileStore.java
@@ -67,12 +67,12 @@ public class TestDistribFileStore extends SolrCloudTestCase 
{
 
   @Before
   public void setup() {
-    System.setProperty("enable.packages", "true");
+    System.setProperty("solr.packages.enabled", "true");
   }
 
   @After
   public void teardown() {
-    System.clearProperty("enable.packages");
+    System.clearProperty("solr.packages.enabled");
   }
 
   @Test
diff --git 
a/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java 
b/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
index 733a44590e1..6306c859449 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestContainerPlugin.java
@@ -78,7 +78,7 @@ public class TestContainerPlugin extends SolrCloudTestCase {
 
   /**
    * A package listener that will count how many times it has been triggered. 
Useful to wait for
-   * changes accross multiple cores.
+   * changes across multiple cores.
    *
    * <p>Use by calling {@link #reset()} before the API calls, and then {@link 
#waitFor(int)} to
    * block until <code>num</code> cores have been notified.
@@ -112,7 +112,7 @@ public class TestContainerPlugin extends SolrCloudTestCase {
 
   @Before
   public void setup() throws Exception {
-    System.setProperty("enable.packages", "true");
+    System.setProperty("solr.packages.enabled", "true");
     phaser = new Phaser();
     forceV2 = random().nextBoolean();
 
@@ -143,7 +143,7 @@ public class TestContainerPlugin extends SolrCloudTestCase {
   @After
   public void teardown() throws Exception {
     shutdownCluster();
-    System.clearProperty("enable.packages");
+    System.clearProperty("solr.packages.enabled");
   }
 
   @SuppressWarnings("unchecked")
diff --git 
a/solr/core/src/test/org/apache/solr/pkg/PackageStoreSchemaPluginsTest.java 
b/solr/core/src/test/org/apache/solr/pkg/PackageStoreSchemaPluginsTest.java
index 5fa62780a6b..257501e8052 100644
--- a/solr/core/src/test/org/apache/solr/pkg/PackageStoreSchemaPluginsTest.java
+++ b/solr/core/src/test/org/apache/solr/pkg/PackageStoreSchemaPluginsTest.java
@@ -60,7 +60,7 @@ public class PackageStoreSchemaPluginsTest extends 
SolrCloudTestCase {
   @Override
   public void setUp() throws Exception {
     super.setUp();
-    System.setProperty("enable.packages", "true");
+    System.setProperty("solr.packages.enabled", "true");
     configureCluster(2)
         // add a configset where one schema field is of type 
`my.pkg.MyTextField`
         // this class is available via schema-plugins.jar.bin
@@ -79,7 +79,7 @@ public class PackageStoreSchemaPluginsTest extends 
SolrCloudTestCase {
       cluster.shutdown();
       cluster = null;
     }
-    System.clearProperty("enable.packages");
+    System.clearProperty("solr.packages.enabled");
     super.tearDown();
   }
 
diff --git a/solr/core/src/test/org/apache/solr/pkg/TestPackages.java 
b/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
index b295b68f332..092877e6add 100644
--- a/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
+++ b/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
@@ -92,7 +92,7 @@ public class TestPackages extends SolrCloudTestCase {
   @Override
   public void setUp() throws Exception {
     super.setUp();
-    System.setProperty("enable.packages", "true");
+    System.setProperty("solr.packages.enabled", "true");
     configureCluster(4)
         .withJettyConfig(jetty -> jetty.enableV2(true))
         .addConfig("conf", configset("conf3"))
@@ -106,7 +106,7 @@ public class TestPackages extends SolrCloudTestCase {
     if (cluster != null) {
       cluster.shutdown();
     }
-    System.clearProperty("enable.packages");
+    System.clearProperty("solr.packages.enabled");
 
     super.tearDown();
   }
diff --git 
a/solr/core/src/test/org/apache/solr/request/TestRemoteStreaming.java 
b/solr/core/src/test/org/apache/solr/request/TestRemoteStreaming.java
index df7feaa7b2c..4ac59bbd3cb 100644
--- a/solr/core/src/test/org/apache/solr/request/TestRemoteStreaming.java
+++ b/solr/core/src/test/org/apache/solr/request/TestRemoteStreaming.java
@@ -44,8 +44,8 @@ public class TestRemoteStreaming extends SolrJettyTestBase {
 
   @BeforeClass
   public static void beforeTest() throws Exception {
-    System.setProperty("solr.enableRemoteStreaming", "true");
-    System.setProperty("solr.enableStreamBody", "true");
+    System.setProperty("solr.requests.streaming.remote.enabled", "true");
+    System.setProperty("solr.requests.streaming.body.enabled", "true");
     Path solrHomeDirectory = 
createTempDir(LuceneTestCase.getTestClass().getSimpleName());
     setupJettyTestHome(solrHomeDirectory, "collection1");
     createAndStartJetty(solrHomeDirectory.toAbsolutePath());
diff --git a/solr/core/src/test/org/apache/solr/request/TestStreamBody.java 
b/solr/core/src/test/org/apache/solr/request/TestStreamBody.java
index 13c793913c7..c85b1ce6a48 100644
--- a/solr/core/src/test/org/apache/solr/request/TestStreamBody.java
+++ b/solr/core/src/test/org/apache/solr/request/TestStreamBody.java
@@ -68,7 +68,7 @@ public class TestStreamBody extends RestTestBase {
   // SOLR-3161
   @Test
   public void testQtUpdateFails() throws Exception {
-    System.setProperty("solr.enableStreamBody", "true");
+    System.setProperty("solr.requests.streaming.body.enabled", "true");
     startSolr();
 
     SolrQuery query = new SolrQuery();
diff --git a/solr/core/src/test/org/apache/solr/search/TestSmileRequest.java 
b/solr/core/src/test/org/apache/solr/search/TestSmileRequest.java
index 7f282cc39d7..450b2fbee0a 100644
--- a/solr/core/src/test/org/apache/solr/search/TestSmileRequest.java
+++ b/solr/core/src/test/org/apache/solr/search/TestSmileRequest.java
@@ -43,7 +43,7 @@ public class TestSmileRequest extends SolrTestCaseJ4 {
   @BeforeClass
   public static void beforeTests() throws Exception {
     systemSetPropertySolrDisableUrlAllowList("true");
-    System.setProperty("solr.enableStreamBody", "true");
+    System.setProperty("solr.requests.streaming.body.enabled", "true");
     JSONTestUtil.failRepeatedKeys = true;
     initCore("solrconfig-tlog.xml", "schema_latest.xml");
   }
diff --git 
a/solr/core/src/test/org/apache/solr/search/json/TestJsonRequest.java 
b/solr/core/src/test/org/apache/solr/search/json/TestJsonRequest.java
index f8527583aae..f6855a236b6 100644
--- a/solr/core/src/test/org/apache/solr/search/json/TestJsonRequest.java
+++ b/solr/core/src/test/org/apache/solr/search/json/TestJsonRequest.java
@@ -50,7 +50,7 @@ public class TestJsonRequest extends SolrTestCaseHS {
   @BeforeClass
   public static void beforeTests() throws Exception {
     systemSetPropertySolrDisableUrlAllowList("true");
-    System.setProperty("solr.enableStreamBody", "true");
+    System.setProperty("solr.requests.streaming.body.enabled", "true");
     JSONTestUtil.failRepeatedKeys = true;
     initCore("solrconfig-tlog.xml", "schema_latest.xml");
   }
diff --git a/solr/core/src/test/org/apache/solr/servlet/CacheHeaderTest.java 
b/solr/core/src/test/org/apache/solr/servlet/CacheHeaderTest.java
index f304468abd7..aecee86eed7 100644
--- a/solr/core/src/test/org/apache/solr/servlet/CacheHeaderTest.java
+++ b/solr/core/src/test/org/apache/solr/servlet/CacheHeaderTest.java
@@ -36,7 +36,8 @@ public class CacheHeaderTest extends CacheHeaderTestBase {
 
   @BeforeClass
   public static void beforeTest() throws Exception {
-    System.setProperty("solr.enableRemoteStreaming", "true"); // needed for 
testCacheVetoHandler
+    System.setProperty(
+        "solr.requests.streaming.remote.enabled", "true"); // needed for 
testCacheVetoHandler
 
     Path solrHomeDirectory = createTempDir();
     setupJettyTestHome(solrHomeDirectory, "collection1");
diff --git 
a/solr/core/src/test/org/apache/solr/servlet/DirectSolrConnectionTest.java 
b/solr/core/src/test/org/apache/solr/servlet/DirectSolrConnectionTest.java
index 0e4ecbd63ee..fbacd904ae0 100644
--- a/solr/core/src/test/org/apache/solr/servlet/DirectSolrConnectionTest.java
+++ b/solr/core/src/test/org/apache/solr/servlet/DirectSolrConnectionTest.java
@@ -27,7 +27,7 @@ public class DirectSolrConnectionTest extends SolrTestCaseJ4 {
 
   @BeforeClass
   public static void beforeClass() throws Exception {
-    System.setProperty("solr.enableStreamBody", "true");
+    System.setProperty("solr.requests.streaming.body.enabled", "true");
     initCore("solr/crazy-path-to-config.xml", "solr/crazy-path-to-schema.xml");
   }
 
diff --git 
a/solr/core/src/test/org/apache/solr/servlet/SolrRequestParserTest.java 
b/solr/core/src/test/org/apache/solr/servlet/SolrRequestParserTest.java
index fe56c82a7f8..3a2c1ce6d76 100644
--- a/solr/core/src/test/org/apache/solr/servlet/SolrRequestParserTest.java
+++ b/solr/core/src/test/org/apache/solr/servlet/SolrRequestParserTest.java
@@ -63,8 +63,8 @@ public class SolrRequestParserTest extends SolrTestCaseJ4 {
   @BeforeClass
   public static void beforeClass() throws Exception {
     assumeWorkingMockito();
-    System.setProperty("solr.enableRemoteStreaming", "true");
-    System.setProperty("solr.enableStreamBody", "true");
+    System.setProperty("solr.requests.streaming.remote.enabled", "true");
+    System.setProperty("solr.requests.streaming.body.enabled", "true");
     initCore("solrconfig.xml", "schema.xml");
     parser = new SolrRequestParsers(h.getCore().getSolrConfig());
   }
diff --git a/solr/docker/tests/cases/test_log4j/log4j2.xml 
b/solr/docker/tests/cases/test_log4j/log4j2.xml
index f1958fc4eeb..0d9949535cd 100644
--- a/solr/docker/tests/cases/test_log4j/log4j2.xml
+++ b/solr/docker/tests/cases/test_log4j/log4j2.xml
@@ -29,8 +29,8 @@
 
     <RollingFile
         name="RollingFile"
-        fileName="${sys:solr.log.dir}/solr.log"
-        filePattern="${sys:solr.log.dir}/solr.log.%i" >
+        fileName="${sys:solr.logs.dir}/solr.log"
+        filePattern="${sys:solr.logs.dir}/solr.log.%i" >
       <PatternLayout>
         <Pattern>
           %d{yyyy-MM-dd HH:mm:ss.SSS} %-5p (%t) 
[%notEmpty{c:%X{collection}}%notEmpty{ s:%X{shard}}%notEmpty{ 
r:%X{replica}}%notEmpty{ x:%X{core}}] %c{1.} %m%n
@@ -45,8 +45,8 @@
     
     <RollingFile
         name="RollingJsonFile"
-        fileName="${sys:solr.log.dir}/solr.json.log"
-        filePattern="${sys:solr.log.dir}/solr.json.log.%i" >
+        fileName="${sys:solr.logs.dir}/solr.json.log"
+        filePattern="${sys:solr.logs.dir}/solr.json.log.%i" >
       <JsonTemplateLayout 
eventTemplateUri="classpath:LogstashJsonEventLayoutV1.json" /> <!-- provided by 
log4j-layout-template-json.jar -->
       <Policies>
         <OnStartupTriggeringPolicy />
@@ -57,8 +57,8 @@
 
     <RollingFile
         name="SlowFile"
-        fileName="${sys:solr.log.dir}/solr_slow_requests.log"
-        filePattern="${sys:solr.log.dir}/solr_slow_requests.log.%i" >
+        fileName="${sys:solr.logs.dir}/solr_slow_requests.log"
+        filePattern="${sys:solr.logs.dir}/solr_slow_requests.log.%i" >
       <PatternLayout>
         <Pattern>
           %d{yyyy-MM-dd HH:mm:ss.SSS} %-5p (%t) 
[%notEmpty{c:%X{collection}}%notEmpty{ s:%X{shard}}%notEmpty{ 
r:%X{replica}}%notEmpty{ x:%X{core}}] %c{1.} %m%n
diff --git a/solr/packaging/test/test_basic_auth.bats 
b/solr/packaging/test/test_basic_auth.bats
index a84d9d15d4a..973aa95f351 100644
--- a/solr/packaging/test/test_basic_auth.bats
+++ b/solr/packaging/test/test_basic_auth.bats
@@ -21,7 +21,7 @@ setup() {
   common_clean_setup
   
   echo "Starting Solr"
-  solr start -Denable.packages=true
+  solr start -Dsolr.packages.enabled=true
   
   # The auth command exports some system variables that are injected as basic 
auth username and password, 
   # however that defeats our test so fake that out via --solr-include-file 
param specifing a bogus path.
diff --git a/solr/packaging/test/test_packages.bats 
b/solr/packaging/test/test_packages.bats
index cc7cd1b82ce..1f60523e53f 100644
--- a/solr/packaging/test/test_packages.bats
+++ b/solr/packaging/test/test_packages.bats
@@ -29,7 +29,7 @@ teardown() {
 }
 
 @test "lifecycle of package" {
-  run solr start -Denable.packages=true
+  run solr start -Dsolr.packages.enabled=true
 
   run solr package --help
   assert_output --partial "Add a repository to Solr"
@@ -39,7 +39,7 @@ teardown() {
 }
 
 @test "deploying and undeploying a collection level package" {
-  run solr start -Denable.packages=true
+  run solr start -Dsolr.packages.enabled=true
 
   solr create -c foo-1.2
 
@@ -64,7 +64,7 @@ teardown() {
 @test "deploying and undeploying a cluster level package" {
   skip "For developing package infra; requires a connection to github"
 
-  run solr start -Denable.packages=true
+  run solr start -Dsolr.packages.enabled=true
   
   run solr package add-repo splainer 
"https://raw.githubusercontent.com/o19s/splainer/refs/heads/main/solr-splainer-package/repo/";
   assert_output --partial "Added repository: splainer"
diff --git a/solr/packaging/test/test_start_solr.bats 
b/solr/packaging/test/test_start_solr.bats
index ae0f6f514bd..2ba80e44e95 100644
--- a/solr/packaging/test/test_start_solr.bats
+++ b/solr/packaging/test/test_start_solr.bats
@@ -81,6 +81,11 @@ teardown() {
   refute_output --partial 'Exception'
 }
 
+@test "deprecated system properties converted to modern properties" {
+  solr start -Denable.packages=true
+  assert_file_contains "${SOLR_LOGS_DIR}/solr.log" 'You are passing in 
deprecated system property enable.packages and should upgrade to using 
solr.packages.enabled instead.'
+}
+
 @test "start with custom jetty options" {
   export ENABLE_REMOTE_JMX_OPTS=true
   export RMI_PORT=65535 # need to make sure we don't exceed port range so hard 
code it
diff --git a/solr/server/etc/jetty-requestlog.xml 
b/solr/server/etc/jetty-requestlog.xml
index 9560ca96542..dee4a585182 100644
--- a/solr/server/etc/jetty-requestlog.xml
+++ b/solr/server/etc/jetty-requestlog.xml
@@ -28,7 +28,7 @@
       <!-- Writer -->
       <Arg>
         <New class="org.eclipse.jetty.server.AsyncRequestLogWriter">
-          <Arg><Property name="solr.log.dir" 
default="logs"/>/yyyy_mm_dd.request.log</Arg>
+          <Arg><Property name="solr.logs.dir" 
default="logs"/>/yyyy_mm_dd.request.log</Arg>
           <Set name="filenameDateFormat">yyyy_MM_dd</Set>
           <Set name="retainDays"><Property 
name="solr.log.requestlog.retaindays" default="3"/></Set>
           <Set name="append">true</Set>
diff --git a/solr/server/etc/security.policy b/solr/server/etc/security.policy
index 0750285410e..2e65fc70e07 100644
--- a/solr/server/etc/security.policy
+++ b/solr/server/etc/security.policy
@@ -196,11 +196,11 @@ grant {
   permission java.io.FilePermission "${solr.data.home}", 
"read,write,delete,readlink";
   permission java.io.FilePermission "${solr.data.home}${/}-", 
"read,write,delete,readlink";
 
-  permission java.io.FilePermission "${solr.default.confdir}", 
"read,write,delete,readlink";
-  permission java.io.FilePermission "${solr.default.confdir}${/}-", 
"read,write,delete,readlink";
+  permission java.io.FilePermission "${solr.configset.default.confdir}", 
"read,write,delete,readlink";
+  permission java.io.FilePermission "${solr.configset.default.confdir}${/}-", 
"read,write,delete,readlink";
 
-  permission java.io.FilePermission "${solr.log.dir}", 
"read,write,delete,readlink";
-  permission java.io.FilePermission "${solr.log.dir}${/}-", 
"read,write,delete,readlink";
+  permission java.io.FilePermission "${solr.logs.dir}", 
"read,write,delete,readlink";
+  permission java.io.FilePermission "${solr.logs.dir}${/}-", 
"read,write,delete,readlink";
 
   permission java.io.FilePermission "${solr.allowPaths}", 
"read,write,delete,readlink";
   permission java.io.FilePermission "${solr.allowPaths}${/}-", 
"read,write,delete,readlink";
diff --git a/solr/server/resources/log4j2.xml b/solr/server/resources/log4j2.xml
index 1c59712cc79..3a0e51d91b6 100644
--- a/solr/server/resources/log4j2.xml
+++ b/solr/server/resources/log4j2.xml
@@ -30,8 +30,8 @@
 
     <RollingRandomAccessFile
         name="MainLogFile"
-        fileName="${sys:solr.log.dir}/solr.log"
-        filePattern="${sys:solr.log.dir}/solr.log.%i" >
+        fileName="${sys:solr.logs.dir}/solr.log"
+        filePattern="${sys:solr.logs.dir}/solr.log.%i" >
       <PatternLayout>
         <Pattern>
           %maxLen{%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p (%t) 
[%notEmpty{c:%X{collection}}%notEmpty{ s:%X{shard}}%notEmpty{ 
r:%X{replica}}%notEmpty{ x:%X{core}}%notEmpty{ t:%X{trace_id}}] %c{1.} 
%m%notEmpty{ =>%ex{short}}}{10240}%n
@@ -46,8 +46,8 @@
 
     <RollingRandomAccessFile
         name="SlowLogFile"
-        fileName="${sys:solr.log.dir}/solr_slow_requests.log"
-        filePattern="${sys:solr.log.dir}/solr_slow_requests.log.%i" >
+        fileName="${sys:solr.logs.dir}/solr_slow_requests.log"
+        filePattern="${sys:solr.logs.dir}/solr_slow_requests.log.%i" >
       <PatternLayout>
         <Pattern>
           %maxLen{%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p (%t) 
[%notEmpty{c:%X{collection}}%notEmpty{ s:%X{shard}}%notEmpty{ 
r:%X{replica}}%notEmpty{ x:%X{core}}%notEmpty{ t:%X{trace_id}}] %c{1.} 
%m%notEmpty{ =>%ex{short}}}{10240}%n
diff --git 
a/solr/solr-ref-guide/modules/configuration-guide/pages/config-sets.adoc 
b/solr/solr-ref-guide/modules/configuration-guide/pages/config-sets.adoc
index b44c8a82825..f404b76ae09 100644
--- a/solr/solr-ref-guide/modules/configuration-guide/pages/config-sets.adoc
+++ b/solr/solr-ref-guide/modules/configuration-guide/pages/config-sets.adoc
@@ -57,7 +57,7 @@ By default the excluded file types are:
 However, users can impose stricter or looser limits on their systems by 
providing a comma separated list of file types
 (without the preceding dot, e.g. `jar,class,csv`), to either of the following 
settings:
 
-- System Property: `-DsolrConfigSetForbiddenFileTypes`
+- System Property: `-Dsolr.configset.forbidden.file.types`
 - Environment Variable: `SOLR_CONFIG_SET_FORBIDDEN_FILE_TYPES`
 
 == Configsets in User-Managed Clusters or Single-Node Installations
diff --git 
a/solr/solr-ref-guide/modules/configuration-guide/pages/package-manager-internals.adoc
 
b/solr/solr-ref-guide/modules/configuration-guide/pages/package-manager-internals.adoc
index 33b6afcc2a4..e7aa4703e46 100644
--- 
a/solr/solr-ref-guide/modules/configuration-guide/pages/package-manager-internals.adoc
+++ 
b/solr/solr-ref-guide/modules/configuration-guide/pages/package-manager-internals.adoc
@@ -42,13 +42,13 @@ As soon as the configuration is modified, the corresponding 
classloaders are rel
 
 == Package Loading Security
 Packages are disabled by default.
-Start all your nodes with the system property `-Denable.packages=true` to use 
this feature.
+Start all your nodes with the system property `-Dsolr.packages.enabled=true` 
to use this feature.
 
 *Example*
 [source,bash]
 ----
 
-bin/solr start -Denable.packages=true
+bin/solr start -Dsolr.packages.enabled=true
 ----
 
 === Upload Your Keys
diff --git 
a/solr/solr-ref-guide/modules/configuration-guide/pages/package-manager.adoc 
b/solr/solr-ref-guide/modules/configuration-guide/pages/package-manager.adoc
index d4fd1754234..4adb2fa4806 100644
--- a/solr/solr-ref-guide/modules/configuration-guide/pages/package-manager.adoc
+++ b/solr/solr-ref-guide/modules/configuration-guide/pages/package-manager.adoc
@@ -42,11 +42,11 @@ The package manager (CLI) allows you to:
 === Enable the Package Manager
 
 The package manager is disabled by default.
-To enable it, start all Solr nodes with the `-Denable.packages=true` parameter.
+To enable it, start all Solr nodes with the `-Dsolr.packages.enabled=true` 
parameter.
 
 [source,bash]
 ----
-$ bin/solr start -Denable.packages=true
+$ bin/solr start -Dsolr.packages.enabled=true
 ----
 
 WARNING: There are security consequences to enabling the package manager.
diff --git 
a/solr/solr-ref-guide/modules/configuration-guide/pages/system-info-handler.adoc
 
b/solr/solr-ref-guide/modules/configuration-guide/pages/system-info-handler.adoc
index afd8680858d..26b3845a47e 100644
--- 
a/solr/solr-ref-guide/modules/configuration-guide/pages/system-info-handler.adoc
+++ 
b/solr/solr-ref-guide/modules/configuration-guide/pages/system-info-handler.adoc
@@ -188,7 +188,7 @@ curl http://localhost:8983/solr/admin/info/system
         "-Dcom.sun.management.jmxremote.rmi.port=18983",
         "-DzkClientTimeout=15000",
         "-DzkHost=192.168.32.3:2181",
-        "-Dsolr.log.dir=/var/solr/logs",
+        "-Dsolr.logs.dir=/var/solr/logs",
         "-Djetty.port=8983",
         "-DSTOP.PORT=7983",
         "-DSTOP.KEY=solrrocks",
@@ -197,7 +197,7 @@ curl http://localhost:8983/solr/admin/info/system
         "-Dsolr.solr.home=/var/solr/data",
         "-Dsolr.data.home=",
         "-Dsolr.install.dir=/opt/solr",
-        
"-Dsolr.default.confdir=/opt/solr/server/solr/configsets/_default/conf",
+        
"-Dsolr.configset.default.confdir=/opt/solr/server/solr/configsets/_default/conf",
         "-Dlog4j.configurationFile=file:/var/solr/log4j2.xml",
         "-Xss256k",
         "-Dsolr.jetty.https.port=8983"],
@@ -297,7 +297,7 @@ curl http://localhost:8983/solr/gettingstarted/admin/system
         "-Dcom.sun.management.jmxremote.authenticate=false",
         "-Dcom.sun.management.jmxremote.port=18983",
         "-Dcom.sun.management.jmxremote.rmi.port=18983",
-        "-Dsolr.log.dir=/var/solr/logs",
+        "-Dsolr.logs.dir=/var/solr/logs",
         "-Djetty.port=8983",
         "-DSTOP.PORT=7983",
         "-DSTOP.KEY=solrrocks",
@@ -306,7 +306,7 @@ curl http://localhost:8983/solr/gettingstarted/admin/system
         "-Dsolr.solr.home=/var/solr/data",
         "-Dsolr.data.home=",
         "-Dsolr.install.dir=/opt/solr",
-        
"-Dsolr.default.confdir=/opt/solr/server/solr/configsets/_default/conf",
+        
"-Dsolr.configset.default.confdir=/opt/solr/server/solr/configsets/_default/conf",
         "-Dlog4j.configurationFile=file:/var/solr/log4j2.xml",
         "-Xss256k",
         "-Dsolr.jetty.https.port=8983"],
diff --git 
a/solr/solr-ref-guide/modules/deployment-guide/pages/metrics-reporting.adoc 
b/solr/solr-ref-guide/modules/deployment-guide/pages/metrics-reporting.adoc
index 8295050aa9f..61f60827c3c 100644
--- a/solr/solr-ref-guide/modules/deployment-guide/pages/metrics-reporting.adoc
+++ b/solr/solr-ref-guide/modules/deployment-guide/pages/metrics-reporting.adoc
@@ -527,8 +527,8 @@ This can be used in conjunction with the `solr.xml` example 
provided earlier in
   ...
     <RollingFile
         name="MetricsFile"
-        fileName="${sys:solr.log.dir}/solr_metrics.log"
-        filePattern="${sys:solr.log.dir}/solr_metrics.log.%i" >
+        fileName="${sys:solr.logs.dir}/solr_metrics.log"
+        filePattern="${sys:solr.logs.dir}/solr_metrics.log.%i" >
       <PatternLayout>
         <Pattern>
           %d{yyyy-MM-dd HH:mm:ss.SSS} %-5p (%t) [%X{node_name} %X{collection} 
%X{shard} %X{replica} %X{core} %X{trace_id}] %m%n
diff --git 
a/solr/solrj-zookeeper/src/java/org/apache/solr/common/cloud/ZkMaintenanceUtils.java
 
b/solr/solrj-zookeeper/src/java/org/apache/solr/common/cloud/ZkMaintenanceUtils.java
index f4eee0e78da..8be068d50ca 100644
--- 
a/solr/solrj-zookeeper/src/java/org/apache/solr/common/cloud/ZkMaintenanceUtils.java
+++ 
b/solr/solrj-zookeeper/src/java/org/apache/solr/common/cloud/ZkMaintenanceUtils.java
@@ -34,6 +34,7 @@ import java.util.function.Predicate;
 import java.util.regex.Pattern;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.common.SolrException;
+import org.apache.solr.common.util.EnvUtils;
 import org.apache.solr.common.util.StrUtils;
 import org.apache.zookeeper.CreateMode;
 import org.apache.zookeeper.KeeperException;
@@ -581,8 +582,7 @@ public class ZkMaintenanceUtils {
     return ret;
   }
 
-  public static final String FORBIDDEN_FILE_TYPES_PROP = 
"solrConfigSetForbiddenFileTypes";
-  public static final String FORBIDDEN_FILE_TYPES_ENV = 
"SOLR_CONFIG_SET_FORBIDDEN_FILE_TYPES";
+  public static final String FORBIDDEN_FILE_TYPES_PROP = 
"solr.configset.forbidden.file.types";
   public static final Set<String> DEFAULT_FORBIDDEN_FILE_TYPES =
       Set.of("class", "java", "jar", "tgz", "zip", "tar", "gz");
   private static volatile Set<String> USE_FORBIDDEN_FILE_TYPES = null;
@@ -592,9 +592,7 @@ public class ZkMaintenanceUtils {
     if (USE_FORBIDDEN_FILE_TYPES == null) {
       synchronized (DEFAULT_FORBIDDEN_FILE_TYPES) {
         if (USE_FORBIDDEN_FILE_TYPES == null) {
-          String userForbiddenFileTypes =
-              System.getProperty(
-                  FORBIDDEN_FILE_TYPES_PROP, 
System.getenv(FORBIDDEN_FILE_TYPES_ENV));
+          String userForbiddenFileTypes = 
EnvUtils.getProperty(FORBIDDEN_FILE_TYPES_PROP);
           if (StrUtils.isNullOrEmpty(userForbiddenFileTypes)) {
             USE_FORBIDDEN_FILE_TYPES = DEFAULT_FORBIDDEN_FILE_TYPES;
           } else {
diff --git a/solr/solrj/src/java/org/apache/solr/common/util/EnvUtils.java 
b/solr/solrj/src/java/org/apache/solr/common/util/EnvUtils.java
index 6adac222ab7..22b5a2ec8ea 100644
--- a/solr/solrj/src/java/org/apache/solr/common/util/EnvUtils.java
+++ b/solr/solrj/src/java/org/apache/solr/common/util/EnvUtils.java
@@ -20,6 +20,7 @@ package org.apache.solr.common.util;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.lang.invoke.MethodHandles;
 import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.List;
@@ -32,6 +33,8 @@ import java.util.TreeMap;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 import org.apache.solr.common.SolrException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Provides convenient access to System Properties for Solr. It also converts 
'SOLR_FOO' env vars to
@@ -39,21 +42,42 @@ import org.apache.solr.common.SolrException;
  * use this in lieu of JDK equivalents.
  */
 public class EnvUtils {
+  private static final Logger log = 
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
   /** Maps ENV keys to sys prop keys for special/custom mappings */
   private static final Map<String, String> CUSTOM_MAPPINGS = new HashMap<>();
 
+  /** Maps deprecated sys prop keys to current sys prop keys with 
special/custom mappings */
+  private static final Map<String, String> DEPRECATED_MAPPINGS = new 
HashMap<>();
+
   private static final Map<String, String> camelCaseToDotsMap = new 
ConcurrentHashMap<>();
 
   static {
     try {
       Properties props = new Properties();
-      try (InputStream stream =
-          
EnvUtils.class.getClassLoader().getResourceAsStream("EnvToSyspropMappings.properties"))
 {
-        props.load(new InputStreamReader(Objects.requireNonNull(stream), 
StandardCharsets.UTF_8));
+      Properties deprecatedProps = new Properties();
+      try (InputStream environmentToSystemPropertyMappings =
+              EnvUtils.class
+                  .getClassLoader()
+                  .getResourceAsStream("EnvToSyspropMappings.properties");
+          InputStream deprecatedSystemPropertyMappings =
+              EnvUtils.class
+                  .getClassLoader()
+                  
.getResourceAsStream("DeprecatedSystemPropertyMappings.properties")) {
+        props.load(
+            new InputStreamReader(
+                Objects.requireNonNull(environmentToSystemPropertyMappings),
+                StandardCharsets.UTF_8));
+        deprecatedProps.load(
+            new InputStreamReader(
+                Objects.requireNonNull(deprecatedSystemPropertyMappings), 
StandardCharsets.UTF_8));
         for (String key : props.stringPropertyNames()) {
           CUSTOM_MAPPINGS.put(key, props.getProperty(key));
         }
-        init(false, System.getenv());
+        for (String key : deprecatedProps.stringPropertyNames()) {
+          DEPRECATED_MAPPINGS.put(key, deprecatedProps.getProperty(key));
+        }
+        init(false, System.getenv(), System.getProperties());
       }
     } catch (IOException e) {
       throw new SolrException(
@@ -179,7 +203,8 @@ public class EnvUtils {
   /**
    * Re-reads environment variables and updates the internal map. Mainly for 
internal and test use.
    */
-  static synchronized void init(boolean overwrite, Map<String, String> env) {
+  static synchronized void init(
+      boolean overwrite, Map<String, String> env, Properties sysProperties) {
     // Convert eligible environment variables to system properties
     for (String key : env.keySet()) {
       if (key.startsWith("SOLR_") || CUSTOM_MAPPINGS.containsKey(key)) {
@@ -190,6 +215,28 @@ public class EnvUtils {
         }
       }
     }
+
+    // Convert deprecated keys to non deprecated versions
+    for (String key : sysProperties.stringPropertyNames()) {
+      if (DEPRECATED_MAPPINGS.containsKey(key)) {
+        String deprecatedKey = key;
+        key = DEPRECATED_MAPPINGS.get(deprecatedKey);
+        log.warn(
+            "You are passing in deprecated system property {} and should 
upgrade to using {} instead.  The deprecated property support will be removed 
in future version of Solr.",
+            deprecatedKey,
+            key);
+
+        if (key.endsWith(".enabled") && deprecatedKey.endsWith(".disabled")) {
+          log.warn(
+              "Converting from legacy system property {} to modern .enabled 
equivalent {} by flipping the boolean property value.",
+              deprecatedKey,
+              key);
+          setProperty(key, String.valueOf(!Boolean.getBoolean(deprecatedKey)));
+        } else {
+          setProperty(key, sysProperties.getProperty(deprecatedKey));
+        }
+      }
+    }
   }
 
   protected static String envNameToSyspropName(String envName) {
diff --git 
a/solr/solrj/src/resources/DeprecatedSystemPropertyMappings.properties 
b/solr/solrj/src/resources/DeprecatedSystemPropertyMappings.properties
new file mode 100644
index 00000000000..88c0210edcc
--- /dev/null
+++ b/solr/solrj/src/resources/DeprecatedSystemPropertyMappings.properties
@@ -0,0 +1,21 @@
+# Mapping from legacy system property names to current system property
+# This file only contains non-standard mappings that do not follow the 
standard naming conversion convention
+# You do not need a entry for a solrMyProperty to solr.my.property conversion
+# We have changed some properties from ending in .disabled to ending as 
.enabled.  
+# In that case we programatically flip the value.
+
+# To be removed in Solr 12:
+
+# To be removed in Solr 11:
+solrConfigSetForbiddenFileTypes=solr.configset.forbidden.file.types
+enable.packages=solr.packages.enabled
+solr.default.confdir=solr.configset.default.confdir
+solr.admin.ui.disabled=solr.ui.enabled
+solr.admin.ui.experimental.disabled=solr.ui.experimental.enabled
+solr.log.dir=solr.logs.dir
+solr.default.confdir=solr.configset.default.confdir
+solr.wait.for.zk=solr.cloud.wait.for.zk.seconds
+solr.enable.remote.streaming=solr.requests.streaming.remote.enabled
+solr.enable.stream.body=solr.requests.streaming.body.enabled
+solr.delete.unknown.cores=solr.cloud.startup.delete.unknown.cores.enabled
+solr.config.set.forbidden.file.types=solr.configset.forbidden.file.types
diff --git a/solr/solrj/src/resources/EnvToSyspropMappings.properties 
b/solr/solrj/src/resources/EnvToSyspropMappings.properties
index dcfa553961a..d20b594142a 100644
--- a/solr/solrj/src/resources/EnvToSyspropMappings.properties
+++ b/solr/solrj/src/resources/EnvToSyspropMappings.properties
@@ -5,29 +5,21 @@
 # This way, env SOLR_FOO_BAR will also match property 'solr.foo.bar' without a 
mapping in this file
 # TODO: Deprecate non-standard sysprops and standardize on solr.foo.bar in 
Solr 10
 AWS_PROFILE=aws.profile
-DEFAULT_CONFDIR=solr.default.confdir
-SOLR_ADMIN_UI_DISABLED=disableAdminUI
 SOLR_ALWAYS_ON_TRACE_ID=solr.alwaysOnTraceId
 SOLR_AUTH_JWT_ALLOW_OUTBOUND_HTTP=solr.auth.jwt.allowOutboundHttp
-SOLR_CONFIG_SET_FORBIDDEN_FILE_TYPES=solrConfigSetForbiddenFileTypes
-SOLR_DELETE_UNKNOWN_CORES=solr.deleteUnknownCores
 SOLR_DISABLE_REQUEST_ID=solr.disableRequestId
-SOLR_ENABLE_PACKAGES=enable.packages
-SOLR_ENABLE_REMOTE_STREAMING=solr.enableRemoteStreaming
-SOLR_ENABLE_STREAM_BODY=solr.enableStreamBody
 SOLR_HIDDEN_SYS_PROPS=solr.hiddenSysProps
 SOLR_HOME=solr.solr.home
 SOLR_HOST=host
 SOLR_HTTP_DISABLE_COOKIES=solr.http.disableCookies
+# Couldn't we just use solr.ip.allowlist everywhere instead of 
solr.jetty.inetaccess.includes?
 SOLR_IP_ALLOWLIST=solr.jetty.inetaccess.includes
 SOLR_IP_DENYLIST=solr.jetty.inetaccess.excludes
-SOLR_LOGS_DIR=solr.log.dir
 SOLR_OTEL_DEFAULT_CONFIGURATOR=solr.otelDefaultConfigurator
 SOLR_PORT=jetty.port
 SOLR_TIMEZONE=user.timezone
 SOLR_TIP=solr.install.dir
 SOLR_TIP_SYM=solr.install.symDir
-SOLR_WAIT_FOR_ZK=waitForZk
 ZK_CLIENT_TIMEOUT=zkClientTimeout
 ZK_CREATE_CHROOT=createZkChroot
 ZK_CREDENTIALS_INJECTOR=zkCredentialsInjector
diff --git a/solr/solrj/src/test/org/apache/solr/common/util/EnvUtilsTest.java 
b/solr/solrj/src/test/org/apache/solr/common/util/EnvUtilsTest.java
index d2cd63795f9..1c549e8571c 100644
--- a/solr/solrj/src/test/org/apache/solr/common/util/EnvUtilsTest.java
+++ b/solr/solrj/src/test/org/apache/solr/common/util/EnvUtilsTest.java
@@ -19,6 +19,7 @@ package org.apache.solr.common.util;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 import org.apache.solr.SolrTestCase;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -41,7 +42,7 @@ public class EnvUtilsTest extends SolrTestCase {
   @BeforeClass
   public static void beforeClass() throws Exception {
     // Make a map of some common Solr environment variables for testing, and 
initialize EnvUtils
-    EnvUtils.init(true, ENV);
+    EnvUtils.init(true, ENV, System.getProperties());
   }
 
   @Test
@@ -80,7 +81,7 @@ public class EnvUtilsTest extends SolrTestCase {
     assertEquals(ENV.get("SOLR_HOME"), EnvUtils.getProperty("solr.solr.home"));
     assertEquals(ENV.get("SOLR_PORT"), EnvUtils.getProperty("jetty.port"));
     assertEquals(ENV.get("SOLR_HOST"), EnvUtils.getProperty("host"));
-    assertEquals(ENV.get("SOLR_LOGS_DIR"), 
EnvUtils.getProperty("solr.log.dir"));
+    assertEquals(ENV.get("SOLR_LOGS_DIR"), 
EnvUtils.getProperty("solr.logs.dir"));
   }
 
   @Test
@@ -93,9 +94,30 @@ public class EnvUtilsTest extends SolrTestCase {
   public void testOverwrite() {
     EnvUtils.setProperty("solr.overwrite", "original");
     var env2 = Map.of("SOLR_OVERWRITE", "overwritten");
-    EnvUtils.init(false, env2);
+    EnvUtils.init(false, env2, new Properties());
     assertEquals("original", EnvUtils.getProperty("solr.overwrite"));
-    EnvUtils.init(true, env2);
+    EnvUtils.init(true, env2, new Properties());
     assertEquals("overwritten", EnvUtils.getProperty("solr.overwrite"));
   }
+
+  @Test
+  public void testDeprecated() {
+    var env = Map.of("SOLR_OVERWRITE", "overwritten");
+    Properties defaultProps = new Properties();
+    defaultProps.setProperty("solrConfigSetForbiddenFileTypes", 
"xml,json,jar");
+
+    EnvUtils.init(false, env, defaultProps);
+    assertEquals("xml,json,jar", 
EnvUtils.getProperty("solr.configset.forbidden.file.types"));
+  }
+
+  @Test
+  public void testFlippingDisabledToEnabledPropertyName() {
+
+    var env = Map.of("SOLR_ADMIN_UI_DISABLED", "true");
+    Properties defaultProps = new Properties();
+    defaultProps.setProperty("solr.admin.ui.disabled", "true");
+
+    EnvUtils.init(false, env, defaultProps);
+    assertEquals(false, EnvUtils.getPropertyAsBool("solr.ui.enabled"));
+  }
 }
diff --git a/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java 
b/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java
index f586044f651..4493be05eb0 100644
--- a/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java
+++ b/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java
@@ -113,22 +113,22 @@ public class SolrTestCase extends LuceneTestCase {
               });
 
   /**
-   * Sets the <code>solr.default.confdir</code> system property to the value 
of {@link
+   * Sets the <code>solr.configset.default.confdir</code> system property to 
the value of {@link
    * ExternalPaths#DEFAULT_CONFIGSET} if and only if the system property is 
not already set, and the
    * <code>DEFAULT_CONFIGSET</code> exists and is a readable directory.
    *
    * <p>Logs INFO/WARNing messages as appropriate based on these 2 conditions.
    *
-   * @see SolrDispatchFilter#SOLR_DEFAULT_CONFDIR_ATTRIBUTE
+   * @see SolrDispatchFilter#SOLR_CONFIGSET_DEFAULT_CONFDIR_ATTRIBUTE
    */
   @BeforeClass
   public static void beforeSolrTestCase() {
     final String existingValue =
-        
EnvUtils.getProperty(SolrDispatchFilter.SOLR_DEFAULT_CONFDIR_ATTRIBUTE);
+        
EnvUtils.getProperty(SolrDispatchFilter.SOLR_CONFIGSET_DEFAULT_CONFDIR_ATTRIBUTE);
     if (null != existingValue) {
       log.info(
           "Test env includes configset dir system property '{}'='{}'",
-          SolrDispatchFilter.SOLR_DEFAULT_CONFDIR_ATTRIBUTE,
+          SolrDispatchFilter.SOLR_CONFIGSET_DEFAULT_CONFDIR_ATTRIBUTE,
           existingValue);
       return;
     }
@@ -136,18 +136,18 @@ public class SolrTestCase extends LuceneTestCase {
     if (Files.isReadable(extPath /* implies exists() */) && 
Files.isDirectory(extPath)) {
       log.info(
           "Setting '{}' system property to test-framework derived value of 
'{}'",
-          SolrDispatchFilter.SOLR_DEFAULT_CONFDIR_ATTRIBUTE,
+          SolrDispatchFilter.SOLR_CONFIGSET_DEFAULT_CONFDIR_ATTRIBUTE,
           ExternalPaths.DEFAULT_CONFIGSET);
       assert null == existingValue;
       System.setProperty(
-          SolrDispatchFilter.SOLR_DEFAULT_CONFDIR_ATTRIBUTE,
+          SolrDispatchFilter.SOLR_CONFIGSET_DEFAULT_CONFDIR_ATTRIBUTE,
           ExternalPaths.DEFAULT_CONFIGSET.toString());
     } else {
       log.warn(
           "System property '{}' is not already set, but test-framework derived 
value ('{}') either "
               + "does not exist or is not a readable directory, you may need 
to set the property yourself "
               + "for tests to run properly",
-          SolrDispatchFilter.SOLR_DEFAULT_CONFDIR_ATTRIBUTE,
+          SolrDispatchFilter.SOLR_CONFIGSET_DEFAULT_CONFDIR_ATTRIBUTE,
           ExternalPaths.DEFAULT_CONFIGSET);
     }
 

Reply via email to