diff --git a/docs/README.md b/docs/README.md
index 22304eb1eb7c..cb030588a267 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -11,7 +11,7 @@ Installing Sphinx and its dependencies in a Python ``virtualenv``:
$ virtualenv .sphinx && source .sphinx/bin/activate
$ pip install -r requirements.txt
-
+
Alternatively use ``sudo`` with the ``pip`` command to install the packages in the system Python distribution.
$ sudo pip install -r requirements.txt
@@ -49,7 +49,7 @@ when it prompts for input. It should build the whole document. If the
table of contents doesn't render properly, delete ``GeoMesa.pdf``
and run ``make`` again.
-To build a single HTML file containing all three manuals:
+To build a single HTML file containing all two manuals:
$ mvn clean install -Pdocs,singlehtml
diff --git a/docs/bin/common.sh b/docs/bin/common.sh
deleted file mode 100644
index d14191ed7544..000000000000
--- a/docs/bin/common.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/bash
-# Common functions used by documentation scripts
-
-function check_repo {
- # check that repo in $dir is a Git repo and has $url as a remote
- dir="$1"
- url="$2"
- echo "check_repo $dir $url"
- if [[ ! -d "$dir" ]] ; then
- echo "ERROR: $dir not a directory"
- exit 3
- fi
- if [[ ! -d "$dir/.git" ]] ; then
- echo "ERROR: $dir not a git repo"
- exit 3
- fi
- cwd="$(pwd)"
- cd "$dir" || exit
- n=$(git remote -v show 2>&1 | grep -c "$url")
- cd "$cwd" || exit
- if [[ "$n" -gt 0 ]] ; then
- return 0
- else
- echo "ERROR: $dir does not have specified remote url"
- exit 3
- fi
-}
diff --git a/docs/bin/run-servlet.sh b/docs/bin/run-servlet.sh
deleted file mode 100755
index 8a195293cbca..000000000000
--- a/docs/bin/run-servlet.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#! /usr/bin/env bash
-# runs a tomcat docker to host doc pages at http://localhost:8080/
-# requires docs to be built, first
-dir="$(cd "$(dirname "$0")/.." || exit; pwd)"
-docker run --rm -p 8080:8080 \
- -v "$dir/target/html:/usr/local/tomcat/webapps/ROOT" \
- tomcat:9.0.70-jdk11
diff --git a/docs/pom.xml b/docs/pom.xml
index 1e72d2043d7a..6313cfff29b4 100644
--- a/docs/pom.xml
+++ b/docs/pom.xml
@@ -66,7 +66,7 @@
-
+
diff --git a/docs/requirements.txt b/docs/requirements.txt
index 8d1933a99f7e..4f9647b1d33f 100644
--- a/docs/requirements.txt
+++ b/docs/requirements.txt
@@ -5,3 +5,9 @@ sphinx-rtd-theme==1.1.1
docutils<0.18
jinja2==3.1.2
sphinx-copybutton==0.5.1
+# pin some older versions that are compatible with sphinx 4.5
+sphinxcontrib-applehelp==1.0.3
+sphinxcontrib.devhelp==1.0.2
+sphinxcontrib-htmlhelp==2.0.0
+sphinxcontrib-serializinghtml==1.1.5
+sphinxcontrib-qthelp==1.0.3
diff --git a/docs/user/cli/ingest.rst b/docs/user/cli/ingest.rst
index cf2b9bbe748f..1e6685155d07 100644
--- a/docs/user/cli/ingest.rst
+++ b/docs/user/cli/ingest.rst
@@ -58,7 +58,7 @@ The ``--converter`` argument may be any of the following:
* The name of a file containing a converter configuration
If a converter is not specified, GeoMesa will attempt to infer a converter definition based on the input files.
-Currently this supports GeoJSON, self-describing Avro, delimited text (TSV, CSV) or Shapefiles. If GeoMesa is able
+Currently this supports JSON, XML, self-describing Avro, delimited text (TSV, CSV), and Shapefiles. If GeoMesa is able
to infer a schema and converter definition, the user can accept them as-is, or alternatively use them as the basis
for a fully custom converter. If desired, the user can persist the inferred converter to file, which allows for
easy modification and reuse. When ingesting a large data set, it can be useful to ingest a single file in local