diff --git a/salt/common/tools/sbin/so-common b/salt/common/tools/sbin/so-common
new file mode 100644
index 000000000..759f78f18
--- /dev/null
+++ b/salt/common/tools/sbin/so-common
@@ -0,0 +1,30 @@
+#!/bin/bash
+#
+# Copyright 2014,2015,2016,2017,2018,2019,2020 Security Onion Solutions, LLC
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+# Check for prerequisites
+if [ "$(id -u)" -ne 0 ]; then
+ echo "This script must be run using sudo!"
+ exit 1
+fi
+
+# Define a banner to separate sections
+banner="========================================================================="
+
+header() {
+ echo
+ printf '%s\n' "$banner" "$*" "$banner"
+}
diff --git a/salt/common/tools/sbin/so-restart b/salt/common/tools/sbin/so-restart
new file mode 100644
index 000000000..e07fd5010
--- /dev/null
+++ b/salt/common/tools/sbin/so-restart
@@ -0,0 +1,36 @@
+#!/bin/bash
+#
+# Copyright 2014,2015,2016,2017,2018,2019,2020 Security Onion Solutions, LLC
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+
+# Usage: so-restart filebeat | kibana | playbook | thehive
+
+. /usr/sbin/so-common
+
+echo $banner
+printf "Restarting $1\n"
+echo $banner
+
+if [ "$2" = "--force" ]
+then
+ printf "\nForce-stopping all Salt jobs before proceeding\n\n"
+ salt-call saltutil.kill_all_jobs
+fi
+
+case $1 in
+ "cortex") docker stop so-thehive-cortex so-thehive && docker rm so-thehive-cortex so-thehive && salt-call state.apply hive queue=True;;
+ "fleet") docker stop so-fleet so-redis && docker rm so-fleet so-redis && salt-call state.apply fleet queue=True;;
+ *) docker stop so-$1 && docker rm so-$1 && salt-call state.apply $1 queue=True;;
+esac