diff --git a/docs/build-docs.sh b/docs/build-docs.sh
index dc4c92c014ab21ce6405b7c765bf6fd7aa35b178..6da63d82bed8839ab2e2d068bd8a86b245fe06d6 100755
--- a/docs/build-docs.sh
+++ b/docs/build-docs.sh
@@ -5,7 +5,7 @@ set -o nounset
 export OSS_PARAMS_FILENAME=../gso/oss-params-example.json
 export TESTING=true
 
-pip install pyyaml mkdocstrings-python mkdocs_gen_files mkdocs-material mkdocs-literate-nav mkdocs-redirects
+pip install pyyaml mkdocstrings-python mkdocs_gen_files mkdocs-material mkdocs-literate-nav mkdocs-redirects mkdocs-open-in-new-tab
 pip install -e ..
 python ./scripts/gen_wf_redirects.py
 
diff --git a/docs/scripts/gen_wf_redirects.py b/docs/scripts/gen_wf_redirects.py
index c4c0d8b321566628a83dd7eea861e8b1486301c4..3b738d8aaa3e0c0367414067043165556a65c667 100644
--- a/docs/scripts/gen_wf_redirects.py
+++ b/docs/scripts/gen_wf_redirects.py
@@ -29,6 +29,7 @@ with Path.open(root / "docs" / "wf_redirects.yaml", "w") as redirect_file:
     file_content = {
         "plugins": [
             "search",
+            {"open-in-new-tab": {"add_icon": True}},
             {"gen-files": {"scripts": ["scripts/gen_ref_pages.py"]}},
             {"redirects": {"redirect_maps": redirect_map}},
             {"literate-nav": {"nav_file": "SUMMARY.md"}},
diff --git a/docs/source/admin_guide/wfo/overview.md b/docs/source/admin_guide/wfo/overview.md
index d8af9f500a4fc8f6d57d8aba173fc2c67ed1b01b..6ec77a2a7ecdd83cc3b3cf038cd8835f6fe0920f 100644
--- a/docs/source/admin_guide/wfo/overview.md
+++ b/docs/source/admin_guide/wfo/overview.md
@@ -22,7 +22,7 @@ classDiagram
 
 A node consists of one or more routers, a switch, and a terminal server. 
 In general -- as laid out more extensively 
-<a href="https://wiki.geant.org/display/NETENG/001+-+Topology+and+physical+layout" target="_blank">here</a> 
+[here](https://wiki.geant.org/display/NETENG/001+-+Topology%2C+physical+layout+and+site+design) 
 (behind login) -- a PoP consists of:
 
 * One or two routers
diff --git a/docs/source/architecture/components/lso/index.md b/docs/source/architecture/components/lso/index.md
index a1e1e0d44c7c791b08441e7931bb61ea9137532a..bcfc35f9f6057d3adae25bbe9f8ed958bbf315a6 100644
--- a/docs/source/architecture/components/lso/index.md
+++ b/docs/source/architecture/components/lso/index.md
@@ -18,11 +18,9 @@ library dependencies.
 
 ## Inner workings
 
-LSO uses <a href="https://ansible.readthedocs.io/projects/runner/en/latest/"
-target="_blank">`ansible-runner`</a> for the execution of Ansible playbooks.
-This package fully dictates the way in which GAP interacts with Ansible itself.
-LSO only introduces an API with a single REST endpoint that exposes its
-functionality.
+LSO uses [`ansible-runner`](https://ansible.readthedocs.io/projects/runner/en/latest/) for the execution of Ansible
+playbooks.  This package fully dictates the way in which GAP interacts with Ansible itself. LSO only introduces an API
+with a single REST endpoint that exposes its functionality.
 
 In the case of GAP, all Ansible playbooks operate without an inventory that
 contains all relevant `group_vars` and `host_vars`. The inventory is passed to
@@ -148,15 +146,12 @@ full-fledged API request to LSO, an example call is given.
 
 ## Code documentation
 
-Code documentation for LSO can be found
-<a href="https://workfloworchestrator.org/lso" target="_blank">here</a>.
+Code documentation for LSO can be found [here](https://workfloworchestrator.org/lso).
 
 ## Deployment within GÉANT
 
-For the deployment in GÉANT, LSO runs inside a Docker container. The Dockerfile
-used to build this container is available <a href=
-"https://gitlab.software.geant.org/goat/gap/lso/-/blob/develop/Dockerfile"
-target="_blank">here</a>.
+For the deployment in GÉANT, LSO runs inside a Docker container. A Dockerfile that can be used to build this container
+is available [here](https://github.com/workfloworchestrator/lso/blob/main/Dockerfile.example).
 
 When building the Docker image, some Ansible roles and collections are installed
 that are required for interacting with Juniper and Nokia equipment. For another