Merge "[VOL-5329] - Update copyright docs to mention SPDX"
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index d764883..6e55a3c 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -3,15 +3,16 @@
 # -----------------------------------------------------------------------
 # [NOTE] - Propogate .pre-commit-config.yaml edits to all repositories!
 # -----------------------------------------------------------------------
+# [NOTE] - Common config file source lives in repo:onf-make
+#    - https://gerrit.opencord.org/plugins/gitiles/onf-make/
+#        +/refs/heads/master/.pre-commit-config.yaml
+# -----------------------------------------------------------------------
 # [TODO]
 #    - pre-commit yaml config exists individually within repositories.
 #    - Generally lint config and benavior is consistent for all repos.
 #    - Exclusions and bulk cleanup necessitate per-repo custom configs.
 #    - Dynamically generate this config file from common and custom
 # -----------------------------------------------------------------------
-# [HOOKS: disabled]
-#    - reuse
-# -----------------------------------------------------------------------
 
 # -----------------------------------------------------------------------
 # Copyright 2024 Open Networking Foundation Contributors
@@ -34,21 +35,42 @@
 # See https://pre-commit.com for more information
 # See https://pre-commit.com/hooks.html for more hooks
 # -----------------------------------------------------------------------
-# .pre-commit-config-yaml 2024-04-10 v0.3
+# .pre-commit-config-yaml 2024-04-19 v0.4
 # -----------------------------------------------------------------------
 
 # ci:
-#   skip: [sync]
+#  autofix_commit_msg: "Chore: pre-commit autoupdate"
+##  skip: [sync]
+#  skip:
+#    # pre-commit.ci does not have actionlint installed
+#    - actionlint
+#
+# exclude: '^docs/conf.py'
 
 repos:
-  # Sync from repo
   - repo: https://github.com/pre-commit/pre-commit-hooks
+#    rev: c4a0b883114b00d8d76b479c820ce7950211c99b  # frozen: v4.5.0
     rev: v4.5.0
     hooks:
       - id: trailing-whitespace
-      - id: end-of-file-fixer
-      - id: check-yaml
       - id: check-added-large-files
+      - id: check-ast
+      - id: check-json
+      - id: check-merge-conflict
+      - id: check-xml
+      - id: check-yaml
+#      - id: debug-statements
+      - id: end-of-file-fixer
+      - id: fix-encoding-pragma
+#     - id: double-quote-string-fixer
+      - id: requirements-txt-fixer
+      - id: mixed-line-ending
+        args: ['--fix=lf']
+
+  - repo: https://github.com/jorisroovers/gitlint
+    rev: acc9d9de6369b76d22cb4167029d2035e8730b98  # frozen: v0.19.1
+    hooks:
+      - id: gitlint
 
   - repo: https://github.com/koalaman/shellcheck-precommit
     rev: v0.10.0
@@ -61,6 +83,37 @@
       - id: yamllint
 
 ## -----------------------------------------------------------------------
+## [SOURCE] Documentation
+## -----------------------------------------------------------------------
+  - repo: https://github.com/rstcheck/rstcheck
+    rev: v6.2.1
+    hooks:
+      - id: rstcheck
+
+  - repo: https://github.com/markdownlint/markdownlint
+    rev: v0.13.0
+    hooks:
+      - id: markdownlint
+#      - id: markdownlint_docker
+
+## -----------------------------------------------------------------------
+## [SOURCE] Docker
+## -----------------------------------------------------------------------
+  - repo: https://github.com/hadolint/hadolint
+    rev: v2.12.0
+    hooks:
+      - id: hadolint
+#      - id: hadolint-docker
+
+## -----------------------------------------------------------------------
+## [SOURCE] Golang
+## -----------------------------------------------------------------------
+  - repo: https://github.com/golangci/golangci-lint
+    rev: v1.41.1
+    hooks:
+      - id: golangci-lint
+
+## -----------------------------------------------------------------------
 ## [SOURCE] REUSE License Checking
 ## -----------------------------------------------------------------------
 #  - repo: https://github.com/fsfe/reuse-tool
@@ -68,6 +121,11 @@
 #    hooks:
 #      - id: reuse
 #     - id: add-license-headers
+#
+# - repo: https://github.com/ansys/pre-commit-hooks
+#   rev: v0.2.9
+#   hooks:
+#     - id: add-license-headers
 #   args:
 # - --custom_copyright=custom copyright phrase
 # - --custom_template=template_name
@@ -78,41 +136,45 @@
 ## -----------------------------------------------------------------------
 ## [SOURCE] Python
 ## -----------------------------------------------------------------------
-
-# - repo: https://github.com/psf/black
-#   rev: 22.10.0
-#   hooks:
-#     - id: black
+  - repo: https://github.com/psf/black
+    rev: 22.10.0
+    hooks:
+      - id: black
 
   - repo: https://github.com/PyCQA/doc8
     rev: v1.1.1
     hooks:
       - id: doc8
 
-  - repo: https://github.com/pre-commit/pygrep-hooks
-    rev: v1.10.0
+## -----------------------------------------------------------------------
+## [SOURCE] Testing
+## -----------------------------------------------------------------------
+  - repo: https://github.com/MarketSquare/robotframework-tidy
+    rev: 4.11.0
     hooks:
-      - id: rst-backticks
-      - id: rst-directive-colons
-      - id: rst-inline-touching-normal
+      - id: robotidy
 
 # -------------------------------------------------------------------
 # https://docs.python.org/3/library/re.html#regular-expression-syntax
 # -------------------------------------------------------------------
 exclude: |
     (?x)^(
-        ^jjb/.*             |
         ^makefiles/.*       |
         ^lf/.*              |
         ^.venv/.*           |
-        ^jenkins-scripts/.* |
-        ^lf-ansible/.*      |
-        ^packer/.*          |
         ^test/.*            |
-        ^jjb/pipeline/voltha/voltha-physical-soak-dt-tests.groovy
+        ^\[END-OF-EXCLUDE\]
     )$
 
 # [SEE ALSO]
 # -----------------------------------------------------------------------
+# https://github.com/memfault/interrupt/blob/master/example/pre-commit/.pre-commit-config.yaml
+# https://pre-commit.com/hooks.html
+# https://github.com/floatingpurr/sync_with_poetry/blob/main/.pre-commit-config.yaml
+# https://github.com/the-common/pre-commit-config-template/blob/master/.pre-commit-config.yaml
+# https://github.com/memfault/interrupt/blob/master/example/pre-commit/.pre-commit-config.yaml
+# -----------------------------------------------------------------------
+# https://www.hatica.io/blog/pre-commit-git-hooks/
+# -----------------------------------------------------------------------
 
 # [EOF]
diff --git a/conf.py b/conf.py
index 3f9d075..2c1c986 100644
--- a/conf.py
+++ b/conf.py
@@ -1,4 +1,24 @@
 # -*- coding: utf-8 -*-
+# -----------------------------------------------------------------------
+# Copyright 2019-2024 Open Networking Foundation Contributors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http:#www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -----------------------------------------------------------------------
+# SPDX-FileCopyrightText: 2019-2024 Open Networking Foundation Contributors
+# SPDX-License-Identifier: Apache-2.0
+# -----------------------------------------------------------------------
+# Intent:
+# -----------------------------------------------------------------------
 
 # Configuration file for the Sphinx documentation builder.
 #
@@ -21,14 +41,13 @@
 
 # --------------------------------------------------------------
 # Large exclusion list(s) extracted from conf.py => .sphinx/*.py
-if True: # Set searchpath early
-    abs_path = Path('.').resolve().as_posix()
+if True:  # Set searchpath early
+    abs_path = Path(".").resolve().as_posix()
     sys.path.insert(0, abs_path)
 
-# from sphinx_conf import *
+# -- Options for linkcheck ----------------------------------------------
 from sphinx_conf.exclude_patterns import exclude_patterns
 from sphinx_conf.linkcheck_ignore import linkcheck_ignore
-# --------------------------------------------------------------
 
 # -----------------------------------------------------------------------
 # -----------------------------------------------------------------------
@@ -36,11 +55,14 @@
     with open("VERSION") as f:
         return f.read().strip()
 
+
 # -- Project information -----------------------------------------------------
 
-project = u'VOLTHA Docs'
-copyright = u'Copyright 2019-2023 Open Networking Foundation (ONF) and the ONF Contributors'
-author = u'VOLTHA Contributors'
+project = "VOLTHA Docs"
+copyright = (
+    "Copyright 2019-2024 Open Networking Foundation Contributors"
+)
+author = "VOLTHA Contributors"
 
 # The short X.Y version
 version = get_version()
@@ -60,15 +82,15 @@
 # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
 # ones.
 extensions = [
-    'recommonmark',
-    'sphinx.ext.coverage',
-    'sphinx.ext.extlinks',
-    'sphinx.ext.graphviz',
-    'sphinx.ext.ifconfig',
-#    'sphinx.ext.intersphinx',    # :doc:`my document <../my_doc{.rst}>`
-    'sphinx.ext.mathjax',
-    'sphinx.ext.todo',
-    'sphinxcontrib.spelling',
+    "recommonmark",
+    "sphinx.ext.coverage",
+    "sphinx.ext.extlinks",
+    "sphinx.ext.graphviz",
+    "sphinx.ext.ifconfig",
+    #    'sphinx.ext.intersphinx',    # :doc:`my document <../my_doc{.rst}>`
+    "sphinx.ext.mathjax",
+    "sphinx.ext.todo",
+    "sphinxcontrib.spelling",
     "sphinx_multiversion",
     "sphinx.ext.intersphinx",
     "sphinxcontrib.openapi",
@@ -87,36 +109,38 @@
 #   ]
 
 # Text files with lists of words that shouldn't fail the spellchecker:
-spelling_word_list_filename=['dict.txt', ]
+spelling_word_list_filename = [
+    "dict.txt",
+]
 
-#sphinx-multiversion prep, run in each versioned source directory
+# sphinx-multiversion prep, run in each versioned source directory
 prep_commands = [
-    'ln -sf _root_/repos _target_/repos',
-    'make prep',
+    "ln -sf _root_/repos _target_/repos",
+    "make prep",
 ]
 
 # don't include tags
 # smv_tag_whitelist = None
 # smv_tag_whitelist = disabled^ # Was = None
-smv_tag_whitelist = 'disabled_a^' # Was = None
+smv_tag_whitelist = "disabled_a^"  # Was = None
 
 # inlcude only the branches matching master and voltha-*
-smv_branch_whitelist = r'^(master|voltha-.*)$'
+smv_branch_whitelist = r"^(master|voltha-.*)$"
 
 # include all remote branches
-smv_remote_whitelist = r'^.*$'
+smv_remote_whitelist = r"^.*$"
 
 # Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
+templates_path = ["_templates"]
 
 # The suffix(es) of source filenames.
 # You can specify multiple suffix as a list of string:
 #
 # source_suffix = ['.rst', '.md']
-source_suffix = ['.rst', '.md']
+source_suffix = [".rst", ".md"]
 
 # The master toctree document.
-master_doc = 'index'
+master_doc = "index"
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
@@ -133,24 +157,22 @@
 # The theme to use for HTML and HTML Help pages.  See the documentation for
 # a list of builtin themes.
 #
-html_theme = 'sphinx_rtd_theme'
+html_theme = "sphinx_rtd_theme"
 
-html_logo = '_static/voltha.svg'
+html_logo = "_static/voltha.svg"
 
-html_favicon = '_static/voltha-favicon-128.png'
+html_favicon = "_static/voltha-favicon-128.png"
 
 # Theme options are theme-specific and customize the look and feel of a theme
 # further.  For a list of options available for each theme, see the
 # documentation.
 #
-html_theme_options = {
-    'logo_only': True
-}
+html_theme_options = {"logo_only": True}
 
 # Add any paths that contain custom static files (such as style sheets) here,
 # relative to this directory. They are copied after the builtin static files,
 # so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
+html_static_path = ["_static"]
 
 # Custom sidebar templates, must be a dictionary that maps document names
 # to template names.
@@ -163,11 +185,10 @@
 # html_sidebars = {}
 
 
-
 # -- Options for HTMLHelp output ---------------------------------------------
 
 # Output file base name for HTML help builder.
-htmlhelp_basename = 'VOLTHADocs'
+htmlhelp_basename = "VOLTHADocs"
 
 
 # -- Options for LaTeX output ------------------------------------------------
@@ -176,15 +197,12 @@
     # The paper size ('letterpaper' or 'a4paper').
     #
     # 'papersize': 'letterpaper',
-
     # The font size ('10pt', '11pt' or '12pt').
     #
     # 'pointsize': '10pt',
-
     # Additional stuff for the LaTeX preamble.
     #
     # 'preamble': '',
-
     # Latex figure (float) alignment
     #
     # 'figure_align': 'htbp',
@@ -194,8 +212,7 @@
 # (source start file, target name, title,
 #  author, documentclass [howto, manual, or own class]).
 latex_documents = [
-    (master_doc, 'VOLTHADocs.tex', u'VOLTHA Docs',
-     u'VOLTHA Team', 'manual'),
+    (master_doc, "VOLTHADocs.tex", "VOLTHA Docs", "VOLTHA Team", "manual"),
 ]
 
 
@@ -203,10 +220,7 @@
 
 # One entry per manual page. List of tuples
 # (source start file, name, description, authors, manual section).
-man_pages = [
-    (master_doc, 'VOLTHA Docs', u'VOLTHA Docs',
-     [author], 1)
-]
+man_pages = [(master_doc, "VOLTHA Docs", "VOLTHA Docs", [author], 1)]
 
 
 # -- Options for Texinfo output ----------------------------------------------
@@ -215,9 +229,15 @@
 # (source start file, target name, title, author,
 #  dir menu entry, description, category)
 texinfo_documents = [
-    (master_doc, 'VOLTHA Docs', u'VOLTHA Docs',
-     author, 'VOLTHADocs', 'One line description of project.',
-     'Miscellaneous'),
+    (
+        master_doc,
+        "VOLTHA Docs",
+        "VOLTHA Docs",
+        author,
+        "VOLTHADocs",
+        "One line description of project.",
+        "Miscellaneous",
+    ),
 ]
 
 
@@ -236,7 +256,7 @@
 # epub_uid = ''
 
 # A list of files that should not be packed into the epub file.
-epub_exclude_files = ['search.html']
+epub_exclude_files = ["search.html"]
 
 
 # -- Extension configuration -------------------------------------------------
@@ -261,14 +281,16 @@
 # ..seealso: https://www.sphinx-doc.org/en/master/usage/extensions/todo.html
 #        'vhc' : 'https://gerrit.opencord.org/plugins/gitiles/voltha-helm-charts',
 
-extlinks=\
-    {
-        'vol-jira' : ('https://jira.opencord.org/projects/VOL/issues/%s', 'jira::%s'),
-        # macros for gerrit or github URL construction
-        'repo'     : ('https://github.com/opencord/%s', 'repo::%s'),
-        'vol-ger'  : ('https://gerrit.opencord.org/plugins/gitiles/%s', 'gerrit::%s'),
-        'vol-git'  : ('https://github.com/opencord/%s', 'git::%s'),
-    }
+extlinks = {
+    "vol-jira": ("https://jira.opencord.org/projects/VOL/issues/%s", "jira::%s"),
+    "jira-browse": ("https://jira.opencord.org/browse/%s", "jira::%s"),
+    # macros for gerrit or github URL construction
+    "repo": ("https://github.com/opencord/%s", "repo::%s"),
+    "vol-ger": ("https://gerrit.opencord.org/plugins/gitiles/%s", "gerrit::%s"),
+    "vol-git": ("https://github.com/opencord/%s", "git::%s"),
+    # https://mvnrepository
+    "mvn-cord": ("http://mvnrepository.com/artifact/org.opencord/%s", "mvn::%s"),
+}
 
 # -- Options for inlining a constant value -----------------------------------
 # NOTE: rst_prolog will affect every file in the repository.
@@ -282,25 +304,26 @@
 # If true, `todo` and `todoList` produce output, else they produce nothing.
 todo_include_todos = True
 
-# -- Options for linkcheck ---------------------------------------------------
-# The link checker strips off .md from links and then complains
-# linkcheck_ignore SEE .sphinx/linkcheck_ignore.py
-
 # -- Configure recommonmark to use AutoStructify -----------------------------
 # Docs: https://recommonmark.readthedocs.io/en/latest/auto_structify.html
 
 import recommonmark
 from recommonmark.transform import AutoStructify
 
-github_doc_root = 'https://github.com/opencord/voltha-docs'
+github_doc_root = "https://github.com/opencord/voltha-docs"
+
 
 def setup(app):
 
-    app.add_css_file('css/rtd_theme_mods.css')
+    app.add_css_file("css/rtd_theme_mods.css")
 
-    app.add_config_value('recommonmark_config', {
-            'url_resolver': lambda url: github_doc_root + url,
-            'auto_toc_tree_section': 'Contents',
-        }, True)
+    app.add_config_value(
+        "recommonmark_config",
+        {
+            "url_resolver": lambda url: github_doc_root + url,
+            "auto_toc_tree_section": "Contents",
+        },
+        True,
+    )
 
     app.add_transform(AutoStructify)
diff --git a/overview/contributing/copyright.rst b/overview/contributing/copyright.rst
index 05ef2a2..6d9eae7 100644
--- a/overview/contributing/copyright.rst
+++ b/overview/contributing/copyright.rst
@@ -3,11 +3,34 @@
 
 Include a copyright notice with all submissions to ONF repositoreis.
 
-- ``Copyright 2017-2023 Open Networking Foundation Contributors``
-- NOTE: Range values such as -present are not legally binding
+- Copyright 2017-2023 Open Networking Foundation Contributors
 
+  - NOTE: Range values such as -present are not legally binding
   - Copyright notice should be dated to the last year sources were modified.
 
+.. code-block:: BASH
+   :caption: Project Copyright Notice
+
+   # -----------------------------------------------------------------------
+   # Copyright 2017-2024 Open Networking Foundation Contributors
+   #
+   # Licensed under the Apache License, Version 2.0 (the "License");
+   # you may not use this file except in compliance with the License.
+   # You may obtain a copy of the License at
+   #
+   # http://www.apache.org/licenses/LICENSE-2.0
+   #
+   # Unless required by applicable law or agreed to in writing, software
+   # distributed under the License is distributed on an "AS IS" BASIS,
+   # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   # See the License for the specific language governing permissions and
+   # limitations under the License.
+   # -----------------------------------------------------------------------
+   # SPDX-FileCopyrightText: 2017-2024 Open Networking Foundation Contributors
+   # SPDX-License-Identifier: Apache-2.0
+   # -----------------------------------------------------------------------
+
+
 See Also
 --------
 
@@ -15,3 +38,5 @@
 - `Message syntax <https://github.com/joey-onf/copyright/blob/origin/master/notice>`_
 - `ONF CLA Information <https://wiki.opencord.org>`_
 - `Contributing License Agreement Manager <https://cla.opennetworking.org/>`_
+
+`Copyrights <copyright/copyright>`_
diff --git a/overview/contributing/copyright/Makefile.rst b/overview/contributing/copyright/Makefile.rst
new file mode 100644
index 0000000..cb93667
--- /dev/null
+++ b/overview/contributing/copyright/Makefile.rst
@@ -0,0 +1,26 @@
+Copyright Notice: Makefile Syntax
+=================================
+
+.. code-block:: BASH
+   :caption: Makefile Syntax
+
+# -----------------------------------------------------------------------
+# Copyright 2017-2024 Open Networking Foundation Contributors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -----------------------------------------------------------------------
+# SPDX-FileCopyrightText: 2017-2024 Open Networking Foundation Contributors
+# SPDX-License-Identifier: Apache-2.0
+# -----------------------------------------------------------------------
+# Intent:
+# -----------------------------------------------------------------------
diff --git a/overview/contributing/copyright/copyright.rst b/overview/contributing/copyright/copyright.rst
new file mode 100644
index 0000000..13743b1
--- /dev/null
+++ b/overview/contributing/copyright/copyright.rst
@@ -0,0 +1,42 @@
+Copyright Notice
+================
+
+Include a copyright notice with all submissions to ONF repositoreis.
+
+- ``Copyright 2017-2023 Open Networking Foundation Contributors``
+- NOTE: Range values such as -present are not legally binding
+
+  - Copyright notice should be dated to the last year sources were modified.
+
+- Add SPDX tokens for programatic validation.
+
+.. toctree::
+   :maxdepth: 1
+   :hidden:
+   :caption: Copyright notice syntax
+
+   golang syntax <golang>
+   JSON <json>
+   Makefile <Makefile>
+   Markdown <markdown>
+
+License Validation: linting
+---------------------------
+
+- `REUSE Software <https://reuse.software/>`_
+- `The REUSE tool <https://git.fsfe.org/reuse/tool>`_
+- `pre-commit <https://pre-commit.com/>`_ hook `reuse-tool <https://github.com/fsfe/reuse-tool>`_
+
+See Also
+--------
+
+- `Copyright notices <https://github.com/joey-onf/copyright>`_
+- `Message syntax <https://github.com/joey-onf/copyright/blob/origin/master/notice>`_
+- `ONF CLA Information <https://wiki.opencord.org>`_
+- `Contributing License Agreement Manager <https://cla.opennetworking.org/>`_
+
+SPDX
+^^^^
+
+- `Handling license info <https://spdx.dev/learn/handling-license-info/>`_
+- `SPDX License List <https://spdx.org/licenses/>`_
diff --git a/overview/contributing/copyright/golang.rst b/overview/contributing/copyright/golang.rst
new file mode 100644
index 0000000..13ec153
--- /dev/null
+++ b/overview/contributing/copyright/golang.rst
@@ -0,0 +1,25 @@
+Copyright Notice: golang syntax
+===============================
+
+.. code-block:: GOLANG
+   :caption: Copyright Syntax
+
+   /* -----------------------------------------------------------------------
+    * Copyright 2017-2024 Open Networking Foundation Contributors
+    *
+    * Licensed under the Apache License, Version 2.0 (the "License");
+    * you may not use this file except in compliance with the License.
+    * You may obtain a copy of the License at
+    *
+    * http://www.apache.org/licenses/LICENSE-2.0
+    *
+    * Unless required by applicable law or agreed to in writing, software
+    * distributed under the License is distributed on an "AS IS" BASIS,
+    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    * See the License for the specific language governing permissions and
+    * limitations under the License.
+    * -----------------------------------------------------------------------
+    * SPDX-FileCopyrightText: 2017-2024 Open Networking Foundation Contributors
+    * SPDX-License-Identifier: Apache-2.0
+    * -----------------------------------------------------------------------
+    */
diff --git a/overview/contributing/copyright/json.rst b/overview/contributing/copyright/json.rst
new file mode 100644
index 0000000..18b0776
--- /dev/null
+++ b/overview/contributing/copyright/json.rst
@@ -0,0 +1,16 @@
+Copyright Notice: Json syntax
+=============================
+
+.. code-block:: JSON
+   :caption: Copyright Syntax
+
+   {
+      {
+          "name": "sample-json-syntax",
+          "version": 1,
+      },
+      "copyright-notice" : {
+          "SPDX-FileCopyrightText" : "2024 Open Networking Foundation Contributors",
+          "SPDX-License-Identifier" : "Apache-2.0"
+      }
+   }
diff --git a/overview/contributing/copyright/markdown.rst b/overview/contributing/copyright/markdown.rst
new file mode 100644
index 0000000..e57068e
--- /dev/null
+++ b/overview/contributing/copyright/markdown.rst
@@ -0,0 +1,28 @@
+Copyright Notice: markdown syntax
+=================================
+
+.. code-block:: HTML
+   :caption: Markdown Syntax
+
+   <!--
+   # -----------------------------------------------------------------------
+   # Copyright 2017-2024 Open Networking Foundation Contributors
+   #
+   # Licensed under the Apache License, Version 2.0 (the "License");
+   # you may not use this file except in compliance with the License.
+   # You may obtain a copy of the License at
+   #
+   # http:#www.apache.org/licenses/LICENSE-2.0
+   #
+   # Unless required by applicable law or agreed to in writing, software
+   # distributed under the License is distributed on an "AS IS" BASIS,
+   # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   # See the License for the specific language governing permissions and
+   # limitations under the License.
+   # -----------------------------------------------------------------------
+   # SPDX-FileCopyrightText: 2017-2024 Open Networking Foundation Contributors
+   # SPDX-License-Identifier: Apache-2.0
+   # -----------------------------------------------------------------------
+   # Intent:
+   # -----------------------------------------------------------------------
+   -->
diff --git a/release_notes/voltha_2.12.rst b/release_notes/voltha_2.12.rst
index c2cbc35..dc35693 100644
--- a/release_notes/voltha_2.12.rst
+++ b/release_notes/voltha_2.12.rst
@@ -19,45 +19,45 @@
 
    * - Jira
      - Description
-   * - `VOL-4949 <|jira-opencord|/VOL-4949>`_
+   * - `VOL-4949 <:jira-browse:/VOL-4949>`_
      - Introduce DEVICE_BUSY reason in the UploadDebugInfoStatus DMI message
-   * - `VOL-4783 <|jira-opencord|/VOL-4783>`_
+   * - `VOL-4783 <:jira-browse:/VOL-4783>`_
      - Introduce UploadDebugInformation RPC in DMI
-   * - `VOL-4788 <|jira-opencord|/VOL-4788>`_
+   * - `VOL-4788 <:jira-browse:/VOL-4788>`_
      - Create package in voltha-libs-go for support of prometheus counters in voltha
-   * - `VOL-4782 <|jira-opencord|/VOL-4782>`_
+   * - `VOL-4782 <:jira-browse:/VOL-4782>`_
      - Enchance DMI to include DataValueType in Events and also clarification for Transceiver Events
-   * - `VOL-4878 <|jira-opencord|/VOL-4878>`_
+   * - `VOL-4878 <:jira-browse:/VOL-4878>`_
      - Improve the voltha-protos extensions interface to get the Rx Power levels from an OLT
-   * - `VOL-4877 <|jira-opencord|/VOL-4877>`_
+   * - `VOL-4877 <:jira-browse:/VOL-4877>`_
      - Enhance DMI interface to be able to retrieve the Tx Power on the Transceivers
-   * - `VOL-4958 <|jira-opencord|/VOL-4958>`_
+   * - `VOL-4958 <:jira-browse:/VOL-4958>`_
      - Introduce protobuf dependencies in DMI for the python testing framework
-   * - `VOL-4952 <|jira-opencord|/VOL-4952>`_
+   * - `VOL-4952 <:jira-browse:/VOL-4952>`_
      - Add retry client options to the grpc library in voltha-lib-go
-   * - `VOL-4983 <|jira-opencord|/VOL-4983>`_
+   * - `VOL-4983 <:jira-browse:/VOL-4983>`_
      - voltctl list device meters with traffic shaping info
-   * - `VOL-5043 <|jira-opencord|/VOL-5043>`_
+   * - `VOL-5043 <:jira-browse:/VOL-5043>`_
      - Enhance DMI interface to have CPU/Mem/Disk usage alarms and also NTP synch alarms
-   * - `VOL-4444 <|jira-opencord|/VOL-4444>`_
+   * - `VOL-4444 <:jira-browse:/VOL-4444>`_
      - VOL-4340 Create API for profile in voltha rw-core for profile operations
-   * - `VOL-4436 <|jira-opencord|/VOL-4436>`_
+   * - `VOL-4436 <:jira-browse:/VOL-4436>`_
      - VOL-4340 Create proto files for sip profile and voip service
-   * - `VOL-5046 <|jira-opencord|/VOL-5046>`_
+   * - `VOL-5046 <:jira-browse:/VOL-5046>`_
      - Reuse grpc clinet connection in grpc clinet lib
-   * - `VOL-4972 <|jira-opencord|/VOL-4972>`_
+   * - `VOL-4972 <:jira-browse:/VOL-4972>`_
      - Changes in openolt adapter to reconcile onu device and pon states
-   * - `VOL-4953 <|jira-opencord|/VOL-4953>`_
+   * - `VOL-4953 <:jira-browse:/VOL-4953>`_
      - Retry for grpc towards core in openolt adapter
-   * - `VOL-5216 <|jira-opencord|/VOL-5216>`_
+   * - `VOL-5216 <:jira-browse:/VOL-5216>`_
      - Handle transition in core during device reboot
-   * - `VOL-5197 <|jira-opencord|/VOL-5197>`_
+   * - `VOL-5197 <:jira-browse:/VOL-5197>`_
      - In DMI add QSFP-DD as a form factor for the TransceiverAttributes
-   * - `VOL-4950 <|jira-opencord|/VOL-4950>`_
+   * - `VOL-4950 <:jira-browse:/VOL-4950>`_
      - Move the component_uuid from EventsConfigurationRequest to EventCfg of DMI interface
-   * - `VOL-5241 <|jira-opencord|/VOL-5241>`_
+   * - `VOL-5241 <:jira-browse:/VOL-5241>`_
      - Add Zyxel to ONU Vendor list
-   * - `VOL-5233 <|jira-opencord|/VOL-5233>`_
+   * - `VOL-5233 <:jira-browse:/VOL-5233>`_
      - VOL-5206 Change "ONU_DYING_GASP_EVENT" check to "ONU_DYING_GASP_RAISE_EVENT" in Alarm tests
 
 Bug Fixes
@@ -71,57 +71,57 @@
      - Description
    * -
      -
-   * - `VOL-4926 <|jira-opencord|/VOL-4926>`_
+   * - `VOL-4926 <:jira-browse:/VOL-4926>`_
      - VOL-4836 kail - godownloader.sh no longer available: alternative needed
-   * - `VOL-4934 <|jira-opencord|/VOL-4934>`_
+   * - `VOL-4934 <:jira-browse:/VOL-4934>`_
      - omci-lib-go: MIC (AES-128) calculation does not properly support the Extended Message Set
-   * - `VOL-4927 <|jira-opencord|/VOL-4927>`_
+   * - `VOL-4927 <:jira-browse:/VOL-4927>`_
      - omci-lib-go: ONT-G ME alarms are not supposed
-   * - `VOL-4929 <|jira-opencord|/VOL-4929>`_
+   * - `VOL-4929 <:jira-browse:/VOL-4929>`_
      - openonuAdapterGo - memory leak seen in long term tests
-   * - `VOL-4931 <|jira-opencord|/VOL-4931>`_
+   * - `VOL-4931 <:jira-browse:/VOL-4931>`_
      - openoltAdapter: memory leak seen in long term tests
-   * - `VOL-4984 <|jira-opencord|/VOL-4984>`_
+   * - `VOL-4984 <:jira-browse:/VOL-4984>`_
      - voltctl log level list does not display the component open-flow-agent
-   * - `VOL-5105 <|jira-opencord|/VOL-5105>`_
+   * - `VOL-5105 <:jira-browse:/VOL-5105>`_
      - cli label missing for pon ports in BBSIM
-   * - `VOL-5193 <|jira-opencord|/VOL-5193>`_
+   * - `VOL-5193 <:jira-browse:/VOL-5193>`_
      - OpenOnuAdapterGo: MIB sync handling fails , when the MIB template has NULL terminated strings.
-   * - `VOL-5187 <|jira-opencord|/VOL-5187>`_
+   * - `VOL-5187 <:jira-browse:/VOL-5187>`_
      - openolt adaptor should not set discovery in progress for a given onu in case the particular discovery request fails
-   * - `VOL-5165 <|jira-opencord|/VOL-5165>`_
+   * - `VOL-5165 <:jira-browse:/VOL-5165>`_
      - Openoltagent getting crashed when ONT is rebooted
-   * - `VOL-5172 <|jira-opencord|/VOL-5172>`_
+   * - `VOL-5172 <:jira-browse:/VOL-5172>`_
      - Olt adaptor trying to add flows to the devices even when the parent olt is not up
-   * - `VOL-5104 <|jira-opencord|/VOL-5104>`_
+   * - `VOL-5104 <:jira-browse:/VOL-5104>`_
      - BBSIM crashed when adding flows
-   * - `VOL-4993 <|jira-opencord|/VOL-4993>`_
+   * - `VOL-4993 <:jira-browse:/VOL-4993>`_
      - Upon OLT reboot, OLT's OPERSTATUS is observed as "rebooted" and no ONTs are discovered
-   * - `VOL-4798 <|jira-opencord|/VOL-4798>`_
+   * - `VOL-4798 <:jira-browse:/VOL-4798>`_
      - voltctl - log configuration for multiple stacks doesn't work
-   * - `VOL-5212 <|jira-opencord|/VOL-5212>`_
+   * - `VOL-5212 <:jira-browse:/VOL-5212>`_
      - Unable to fetch PON RX power for all the ONTs on a PON port.
-   * - `VOL-5215 <|jira-opencord|/VOL-5215>`_
+   * - `VOL-5215 <:jira-browse:/VOL-5215>`_
      - After rebooting ONUs the BBSIM OLT is crashing
-   * - `VOL-5208 <|jira-opencord|/VOL-5208>`_
+   * - `VOL-5208 <:jira-browse:/VOL-5208>`_
      - onu adapter will go into race and crash if delete-device and delete gemport from olt adapter happens at once
-   * - `VOL-5210 <|jira-opencord|/VOL-5210>`_
+   * - `VOL-5210 <:jira-browse:/VOL-5210>`_
      - Open onu adapter crashes when processing requests and device is deleted
-   * - `VOL-5107 <|jira-opencord|/VOL-5107>`_
+   * - `VOL-5107 <:jira-browse:/VOL-5107>`_
      - forced crash during child device detected may result in duplicate device
-   * - `VOL-5219 <|jira-opencord|/VOL-5219>`_
+   * - `VOL-5219 <:jira-browse:/VOL-5219>`_
      - in case voltha core goes down before it gets a chance to fire reconcile to the adaptors it should retrigger the reconcile process once it comes back up
-   * - `VOL-5175 <|jira-opencord|/VOL-5175>`_
+   * - `VOL-5175 <:jira-browse:/VOL-5175>`_
      - OLT device ports list in ONOS is empty after rebooting the OLT
-   * - `VOL-5195 <|jira-opencord|/VOL-5195>`_
+   * - `VOL-5195 <:jira-browse:/VOL-5195>`_
      - Missing ANI-G Signal Fail and Signal Degrade alarm notification
-   * - `VOL-5209 <|jira-opencord|/VOL-5209>`_
+   * - `VOL-5209 <:jira-browse:/VOL-5209>`_
      - Open onu adapter crashes during delete device
-   * - `VOL-5249 <|jira-opencord|/VOL-5249>`_
+   * - `VOL-5249 <:jira-browse:/VOL-5249>`_
      - error loading onos image in voltha-onos-sanity_test
-   * - `VOL-5236 <|jira-opencord|/VOL-5236>`_
+   * - `VOL-5236 <:jira-browse:/VOL-5236>`_
      - onu adapter should gracefully reset vlan config fsm on onu down
-   * - `VOL-5223 <|jira-opencord|/VOL-5223>`_
+   * - `VOL-5223 <:jira-browse:/VOL-5223>`_
      - OpenOnuAdapterGo: Alarm Mgr has to handle unconfigured MEs responses from ONT during Alarm Audit.
 
 
@@ -134,7 +134,7 @@
 
    * - Jira
      - Description
-   * - `VOL-4829 <|jira-opencord|/VOL-4829>`_
+   * - `VOL-4829 <:jira-browse:/VOL-4829>`_
      - openonuAdapterGo: Robustness - Test of reconciling openonu-adapter with continuous traffic at real HW
 
 
@@ -240,92 +240,92 @@
      -
      -
    * - `aaa <https://gerrit.opencord.org/gitweb?p=aaa.git;a=summary>`_
-     - `2.11.0 <https://mvnrepository.com/artifact/org.opencord/aaa/2.11.0>`__
-     - `X <|mvn-aaa|-api/2.11.0>`__
-     - `X <|mvn-api|-api/2.11.0>`__
-     - `X <|mvn-api|/2.11.0>`__
-     - `X <https://gerrit.opencord.org/plugins/gitiles/aaa/+/refs/tags/2.11.0>`__
-     - `X <https://github.com/opencord/aaa/releases/tag/2.11.0>`__
+     - `2.11.0 <:mvn-cord:aaai/2.11.0>`__
+     - `X <:mvn-cord:aaa-api/2.11.0>`__
+     - `X <:mvn-cord:aaa-app/2.11.0>`__
+     - `X <:mvn-cord:aaa/2.11.0>`__
+     - `X <:vol-ger:/aaa/+/refs/tags/2.11.0>`__
+     - `X <:vol-git:/aaa/releases/tag/2.11.0>`__
      -
    * - `bng <https://gerrit.opencord.org/gitweb?p=bng.git;a=summary>`__
-     - `2.5.1 <https://mvnrepository.com/artifact/org.opencord/bng/2.5.1>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/bng-api/2.5.1>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/bng-app/2.5.1>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/bng/2.5.1>`__
-     - `X <https://gerrit.opencord.org/plugins/gitiles/bng/+/refs/tags/2.5.1>`__
-     - `X <https://github.com/opencord/bng/releases/tag/2.5.1>`__
+     - `2.5.1 <:mvn-cord:/bng/2.5.1>`__
+     - `X <:mvn-cord:/bng-api/2.5.1>`__
+     - `X <:mvn-cord:/bng-app/2.5.1>`__
+     - `X <:mvn-cord:/bng/2.5.1>`__
+     - `X <:vol-ger:/bng/+/refs/tags/2.5.1>`__
+     - `X <:vol-git:/bng/releases/tag/2.5.1>`__
      -
    * - `dhcpl2relay <https://gerrit.opencord.org/gitweb?p=dhcpl2relay.git;a=summary>`__
-     - `2.11.0 <https://mvnrepository.com/artifact/org.opencord/dhcpl2relay/2.11.0>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/dhcpl2relay-api/2.11.0>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/dhcpl2relay-app/2.11.0>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/dhcpl2relay>`__
-     - `X <https://gerrit.opencord.org/plugins/gitiles/dhcpl2relay/+/refs/tags/2.11.0>`__
-     - `X <https://github.com/opencord/dhcpl2relay/releases/tag/2.11.0>`__
+     - `2.11.0 <:mvn-cord:/dhcpl2relay/2.11.0>`__
+     - `X <:mvn-cord:/dhcpl2relay-api/2.11.0>`__
+     - `X <:mvn-cord:/dhcpl2relay-app/2.11.0>`__
+     - `X <:mvn-cord:/dhcpl2relay>`__
+     - `X <:vol-ger:/dhcpl2relay/+/refs/tags/2.11.0>`__
+     - `X <:vol-git:/dhcpl2relay/releases/tag/2.11.0>`__
      -
    * - `igmpproxy <https://gerrit.opencord.org/gitweb?p=igmpproxy.git;a=summary>`__
-     - `2.9.0 <https://mvnrepository.com/artifact/org.opencord/onos-app-igmpproxy/2.9.0>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/onos-app-igmpproxy-api/2.9.0>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/onos-app-igmpproxy-app/2.9.0>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/onos-app-igmpproxy/2.9.0>`__
-     - `X <https://gerrit.opencord.org/plugins/gitiles/igmpproxy/+/refs/tags/2.9.0>`__
-     - `X <https://github.com/opencord/igmpproxy/releases/tag/2.9.0>`__
+     - `2.9.0 <:mvn-cord:/onos-app-igmpproxy/2.9.0>`__
+     - `X <:mvn-cord:/onos-app-igmpproxy-api/2.9.0>`__
+     - `X <:mvn-cord:/onos-app-igmpproxy-app/2.9.0>`__
+     - `X <:mvn-cord:/onos-app-igmpproxy/2.9.0>`__
+     - `X <:vol-ger:/igmpproxy/+/refs/tags/2.9.0>`__
+     - `X <:vol-git:/igmpproxy/releases/tag/2.9.0>`__
      -
    * - `kafka <https://gerrit.opencord.org/gitweb?p=kafka-onos.git;a=summary>`__
-     - `2.13.2 <https://mvnrepository.com/artifact/org.opencord/kafka/2.13.2>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/kafka-api/2.13.2>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/kafka-app/2.13.2>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/kafka/2.13.2>`__
-     - `X <https://gerrit.opencord.org/plugins/gitiles/kafka-onos/+/refs/tags/2.13.2>`__
-     - `X <https://github.com/opencord/kafka-onos/releases/tag/2.13.2>`__
+     - `2.13.2 <:mvn-cord:/kafka/2.13.2>`__
+     - `X <:mvn-cord:/kafka-api/2.13.2>`__
+     - `X <:mvn-cord:/kafka-app/2.13.2>`__
+     - `X <:mvn-cord:/kafka/2.13.2>`__
+     - `X <:vol-ger:/kafka-onos/+/refs/tags/2.13.2>`__
+     - `X <:vol-git:/kafka-onos/releases/tag/2.13.2>`__
      - ``N``
-   * - `maclearner <https://gerrit.opencord.org/plugins/gitiles/mac-learning>`__
-     - `1.2.3 <https://mvnrepository.com/artifact/org.opencord/maclearner/1.2.3>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/maclearner-api/1.2.3>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/maclearner-app/1.2.3>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/maclearner>`__
-     - `X <https://gerrit.opencord.org/plugins/gitiles/mac-learning/+/refs/tags/1.2.3>`__
-     - `X <https://github.com/opencord/mac-learning/releases/tag/1.2.3>`__, `T <https://github.com/opencord/mac-learning/tree/1.2.3>`__
+   * - `maclearner <:vol-ger:/mac-learning>`__
+     - `1.2.3 <:mvn-cord:/maclearner/1.2.3>`__
+     - `X <:mvn-cord:/maclearner-api/1.2.3>`__
+     - `X <:mvn-cord:/maclearner-app/1.2.3>`__
+     - `X <:mvn-cord:/maclearner>`__
+     - `X <:vol-ger:/mac-learning/+/refs/tags/1.2.3>`__
+     - `X <:vol-git:/mac-learning/releases/tag/1.2.3>`__, `T <:vol-git:/mac-learning/tree/1.2.3>`__
      -
    * - `mcast <https://gerrit.opencord.org/gitweb?p=mcast.git;a=summary>`__
-     - `2.9.1 <https://mvnrepository.com/artifact/org.opencord/mcast/2.9.1>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/mcast-api/2.9.1>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/mcast-app/2.9.1>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/mcast/2.9.1>`__
-     - `X <https://gerrit.opencord.org/plugins/gitiles/mcast/+/refs/tags/2.9.1>`__
-     - `X <https://github.com/opencord/mcast/releases/tag/2.9.1>`__, `T <https://github.com/opencord/mcast/tree/2.9.1>`__
+     - `2.9.1 <:mvn-cord:/mcast/2.9.1>`__
+     - `X <:mvn-cord:/mcast-api/2.9.1>`__
+     - `X <:mvn-cord:/mcast-app/2.9.1>`__
+     - `X <:mvn-cord:/mcast/2.9.1>`__
+     - `X <:vol-ger:/mcast/+/refs/tags/2.9.1>`__
+     - `X <:vol-git:/mcast/releases/tag/2.9.1>`__, `T <:vol-git:/mcast/tree/2.9.1>`__
      -
    * - `olt <https://gerrit.opencord.org/gitweb?p=olt.git;a=summary>`__
-     - `5.2.6 <https://mvnrepository.com/artifact/org.opencord/olt/5.2.6>`__
-     - `X <|mvn-olt|-api/5.2.6>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/olt-app/5.2.6>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/olt/5.2.6>`__
-     - `X <https://gerrit.opencord.org/plugins/gitiles/olt/+/refs/tags/5.2.6>`__
-     - `X <https://github.com/opencord/olt/releases/tag/5.2.6>`__
+     - `5.2.6 <:mvn-cord:/olt/5.2.6>`__
+     - `X <:mvn-cord:/olt-api/5.2.6>`__
+     - `X <:mvn-cord:/olt-app/5.2.6>`__
+     - `X <:mvn-cord:/olt/5.2.6>`__
+     - `X <:vol-ger:/olt/+/refs/tags/5.2.6>`__
+     - `X <:vol-git:/olt/releases/tag/5.2.6>`__
      -
-   * - `olttopology <https://gerrit.opencord.org/plugins/gitiles/olttopology/>`__
-     - `1.3.1 <https://mvnrepository.com/artifact/org.opencord/olttopology/1.3.1>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/olttopology-api/1.3.1>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/olttopology-app/1.3.1>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/olttopology>`__
-     - `X <https://gerrit.opencord.org/plugins/gitiles/olttopology/+/refs/tags/1.3.1>`__
-     - `X <https://github.com/opencord/olttopology/releases/tag/1.3.1>`__
+   * - `olttopology <:vol-ger:/olttopology/>`__
+     - `1.3.1 <:mvn-cord:/olttopology/1.3.1>`__
+     - `X <:mvn-cord:/olttopology-api/1.3.1>`__
+     - `X <:mvn-cord:/olttopology-app/1.3.1>`__
+     - `X <:mvn-cord:/olttopology>`__
+     - `X <:vol-ger:/olttopology/+/refs/tags/1.3.1>`__
+     - `X <:vol-git:/olttopology/releases/tag/1.3.1>`__
      -
-   * - `pppoeagent <https://gerrit.opencord.org/plugins/gitiles/pppoeagent/>`__
-     - `1.3.0 <https://mvnrepository.com/artifact/org.opencord/pppoeagent/1.3.0>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/pppoeagent-api/1.3.0>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/pppoeagent-app/1.3.0>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/pppoeagent>`__
-     - `X <https://gerrit.opencord.org/plugins/gitiles/pppoeagent/+/refs/tags/1.3.0>`__
-     - `X <https://github.com/opencord/pppoeagent/releases/tag/1.3.0>`__
+   * - `pppoeagent <:vol-ger:/pppoeagent/>`__
+     - `1.3.0 <:mvn-cord:/pppoeagent/1.3.0>`__
+     - `X <:mvn-cord:/pppoeagent-api/1.3.0>`__
+     - `X <:mvn-cord:/pppoeagent-app/1.3.0>`__
+     - `X <:mvn-cord:/pppoeagent>`__
+     - `X <:vol-ger:/pppoeagent/+/refs/tags/1.3.0>`__
+     - `X <:vol-git:/pppoeagent/releases/tag/1.3.0>`__
      -
    * - `sadis <https://gerrit.opencord.org/gitweb?p=sadis.git;a=summary>`__
-     - `5.12.2 <https://mvnrepository.com/artifact/org.opencord/sadis/5.12.2>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/sadis-api/5.12.2>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/sadis-app/5.12.2>`__
-     - `X <https://mvnrepository.com/artifact/org.opencord/sadis>`__
-     - `X <https://gerrit.opencord.org/plugins/gitiles/sadis/+/refs/tags/5.12.2>`__
-     - `X <https://github.com/opencord/sadis/releases/tag/5.12.2>`__
+     - `5.12.2 <:mvn-cord:/sadis/5.12.2>`__
+     - `X <:mvn-cord:/sadis-api/5.12.2>`__
+     - `X <:mvn-cord:/sadis-app/5.12.2>`__
+     - `X <:mvn-cord:/sadis>`__
+     - `X <:vol-ger:/sadis/+/refs/tags/5.12.2>`__
+     - `X <:vol-git:/sadis/releases/tag/5.12.2>`__
      -
 
 - See Also
@@ -343,9 +343,9 @@
 
    * - Component
      - VOLTHA
-     - `Chart.yaml <https://gerrit.opencord.org/plugins/gitiles/voltha-helm-charts/+/refs/heads/master>`_
+     - `Chart.yaml <:vol-ger:/voltha-helm-charts/+/refs/heads/master>`_
      - `Gerrit <https://gerrit.opencord.org/admin/repos>`_
-     - `Github <https://github.com/opencord>`_
+     - `Github <:vol-git:>`_
      - `Docker <https://hub.docker.com/search?q=voltha>`_
      - `Golang <https://pkg.go.dev>`_
      - `Pypi <https://pypi.org>`_
@@ -369,28 +369,28 @@
      -
      -
    * - `ofagent-go <https://gerrit.opencord.org/gitweb?p=ofagent-go.git;a=tree>`_
-     - `2.2.1 <https://gerrit.opencord.org/plugins/gitiles/ofagent-go/+/refs/heads/voltha-2.12/VERSION>`_
+     - `2.2.1 <:vol-ger:/ofagent-go/+/refs/heads/voltha-2.12/VERSION>`_
      - ``N/A``
-     - `X <https://gerrit.opencord.org/plugins/gitiles/ofagent-go/+/refs/tags/v2.2.1>`__
-     - `X <https://github.com/opencord/ofagent-go/releases/tag/v2.2.1>`__
+     - `X <:vol-ger:/ofagent-go/+/refs/tags/v2.2.1>`__
+     - `X <:vol-git:/ofagent-go/releases/tag/v2.2.1>`__
      - `1.1.4(stale) <https://hub.docker.com/layers/voltha/ofagent-go/1.1.4/images/sha256-8231111b69c8643c4981d64abff0a85d71f80763bb98632bb101e92b89882647?context=explore>`_
      - `1.6.5(stale) <https://pkg.go.dev/github.com/opencord/ofagent-go/cmd/ofagent>`_
      -
      -
    * - `voltha-go <https://gerrit.opencord.org/gitweb?p=voltha-go.git;a=tree>`_
-     - `3.5.4 <https://gerrit.opencord.org/plugins/gitiles/voltha-go/+/refs/heads/voltha-2.12/VERSION>`_
+     - `3.5.4 <:vol-ger:/voltha-go/+/refs/heads/voltha-2.12/VERSION>`_
      - ``N/A``
-     - `X <https://gerrit.opencord.org/plugins/gitiles/voltha-go/+/refs/tags/v3.5.4>`__
-     - `X <https://github.com/opencord/voltha-go/releases/tag/v3.5.4>`__
+     - `X <:vol-ger:/voltha-go/+/refs/tags/v3.5.4>`__
+     - `X <:vol-git:/voltha-go/releases/tag/v3.5.4>`__
      - ``N/A``
      - ``v7:?``
      -
      -
-   * - `voltha-lib-go <https://gerrit.opencord.org/plugins/gitiles/voltha-lib-go>`_
-     - `7.5.3 <https://gerrit.opencord.org/plugins/gitiles/voltha-lib-go/+/refs/heads/master/VERSION>`_
+   * - `voltha-lib-go <:vol-ger:/voltha-lib-go>`_
+     - `7.5.3 <:vol-ger:/voltha-lib-go/+/refs/heads/master/VERSION>`_
      - ``N/A``
-     - `X <https://gerrit.opencord.org/plugins/gitiles/voltha-lib-go/+/refs/tags/v7.5.3>`__
-     - `X <https://github.com/opencord/voltha-lib-go/releases/tag/v7.5.3>`__
+     - `X <:vol-ger:/voltha-lib-go/+/refs/tags/v7.5.3>`__
+     - `X <:vol-git:/voltha-lib-go/releases/tag/v7.5.3>`__
      - ``?``
      - `v7 <https://pkg.go.dev/github.com/opencord/voltha-lib-go/v7@v7.5.3>`__
      - ``?``
@@ -398,44 +398,44 @@
    * - `voltha-onos <https://gerrit.opencord.org/gitweb?p=voltha-onos.git;a=tree>`_
      - ``5.1.10``
      - ``0.1.27``
-     - `X <https://gerrit.opencord.org/plugins/gitiles/voltha-onos/+/refs/tags/5.1.10>`__
-     - `X <https://github.com/opencord/voltha-onos/releases/tag/5.1.10>`__
+     - `X <:vol-ger:/voltha-onos/+/refs/tags/5.1.10>`__
+     - `X <:vol-git:/voltha-onos/releases/tag/5.1.10>`__
      - `X <https://hub.docker.com/layers/voltha/voltha-onos/5.1.10/images/sha256-d2498af38194a1cd01a1b9072a58af8647ed50fea2dbc9bd3ac4d4e4b583d72a?context=explore>`__
      -
      -
      - ``N``
    * - `voltha-openolt-adapter <https://gerrit.opencord.org/gitweb?p=voltha-openolt-adapter.git;a=tree>`_
-     - `4.4.11 <https://gerrit.opencord.org/plugins/gitiles/voltha-openolt-adapter/+/refs/heads/voltha-2.12/VERSION>`_
-     - `2.12.6 <https://gerrit.opencord.org/plugins/gitiles/voltha-helm-charts/+/refs/heads/master/voltha-adapter-openolt/Chart.yaml#20>`_
-     - `X <https://gerrit.opencord.org/plugins/gitiles/voltha-openolt-adapter/+/refs/tags/v4.4.11>`__
-     - `X <https://github.com/opencord/voltha-openolt-adapter/releases/tag/v4.4.11>`__
+     - `4.4.11 <:vol-ger:/voltha-openolt-adapter/+/refs/heads/voltha-2.12/VERSION>`_
+     - `2.12.6 <:vol-ger:/voltha-helm-charts/+/refs/heads/master/voltha-adapter-openolt/Chart.yaml#20>`_
+     - `X <:vol-ger:/voltha-openolt-adapter/+/refs/tags/v4.4.11>`__
+     - `X <:vol-git:/voltha-openolt-adapter/releases/tag/v4.4.11>`__
      - `X <https://hub.docker.com/layers/voltha/voltha-openolt-adapter/4.4.11/images/sha256-eed64f687f6029f4cbf531162a10d5e496ea454878987ec0212cd5dbf4c6d9cf?context=explore>`__
      - ``N/A``
      - ``N/A``
      -
    * - `voltha-openonu-adapter-go <https://gerrit.opencord.org/gitweb?p=voltha-openonu-adapter-go.git;a=tree>`_
-     - `2.11.12 <https://gerrit.opencord.org/plugins/gitiles/voltha-openonu-adapter-go/+/refs/heads/voltha-2.12/VERSION>`_
-     - `2.12.2 <https://gerrit.opencord.org/plugins/gitiles/voltha-helm-charts/+/refs/heads/master/voltha-adapter-openonu/Chart.yaml#17>`__
-     - `X <https://gerrit.opencord.org/plugins/gitiles/voltha-openonu-adapter-go/+/refs/tags/v2.11.12>`__
-     - `X <https://github.com/opencord/voltha-openonu-adapter-go/releases/tag/v2.11.12>`__
+     - `2.11.12 <:vol-ger:/voltha-openonu-adapter-go/+/refs/heads/voltha-2.12/VERSION>`_
+     - `2.12.2 <:vol-ger:/voltha-helm-charts/+/refs/heads/master/voltha-adapter-openonu/Chart.yaml#17>`__
+     - `X <:vol-ger:/voltha-openonu-adapter-go/+/refs/tags/v2.11.12>`__
+     - `X <:vol-git:/voltha-openonu-adapter-go/releases/tag/v2.11.12>`__
      - `X <https://hub.docker.com/layers/voltha/voltha-openonu-adapter-go/2.11.12/images/sha256-e9484a8963d08748af5766a6a8ce7f7485efb384488bcf93840ecc1142d7ad74?context=explore>`__
      - `stale <https://pkg.go.dev/github.com/opencord/voltha-openonu-adapter-go>`_
      - ``N/A``
      -
-   * - `voltha-protos <https://gerrit.opencord.org/plugins/gitiles/voltha-protos>`_
-     - `5.4.11 <https://gerrit.opencord.org/plugins/gitiles/voltha-protos/+/refs/heads/voltha-2.12/VERSION>`_
+   * - `voltha-protos <:vol-ger:/voltha-protos>`_
+     - `5.4.11 <:vol-ger:/voltha-protos/+/refs/heads/voltha-2.12/VERSION>`_
      - ``N/A``
-     - `X <https://gerrit.opencord.org/plugins/gitiles/voltha-protos/+/refs/tags/v5.4.11>`__
-     - `X <https://github.com/opencord/voltha-protos/releases/tag/v5.4.11>`__
+     - `X <:vol-ger:/voltha-protos/+/refs/tags/v5.4.11>`__
+     - `X <:vol-git:/voltha-protos/releases/tag/v5.4.11>`__
      - `stale <https://hub.docker.com/r/voltha/voltha-protos/tags>`__
      - `stale <https://pkg.go.dev/github.com/opencord/voltha-protos>`__
      - `5.4.11 <https://pypi.org/project/voltha-protos/5.4.11>`__
      -
-   * - `voltha-system-tests <https://github.com/opencord/voltha-system-tests/releases/tag/2.9.0>`__
+   * - `voltha-system-tests <:vol-git:/voltha-system-tests/releases/tag/2.9.0>`__
      - ``2.12.13``
      -
-     - `X <https://gerrit.opencord.org/plugins/gitiles/voltha-system-tests/+/refs/tags/2.12.13>`__
-     - `X <https://github.com/opencord/voltha-system-tests/tree/2.12.13>`__
+     - `X <:vol-ger:/voltha-system-tests/+/refs/tags/2.12.13>`__
+     - `X <:vol-git:/voltha-system-tests/tree/2.12.13>`__
      -
      -
      -
@@ -465,9 +465,9 @@
 
    * - Component
      - VOLTHA
-     - `Chart.yaml <https://gerrit.opencord.org/plugins/gitiles/voltha-helm-charts/+/refs/heads/master>`_
+     - `Chart.yaml <:vol-ger:/voltha-helm-charts/+/refs/heads/master>`_
      - `Gerrit <https://gerrit.opencord.org/admin/repos>`_
-     - `Github <https://github.com/opencord>`_
+     - `Github <:vol-git:>`_
      - `Docker <https://hub.docker.com/search?q=voltha>`_
      - `Golang <https://pkg.go.dev>`_
      - `Pypi <https://pypi.org>`_
@@ -490,38 +490,38 @@
      -
      -
      -
-   * - `voltha-docs <https://gerrit.opencord.org/plugins/gitiles/voltha-docs>`_ , `docs.voltha.org <https://docs.voltha.org>`_
+   * - `voltha-docs <:vol-ger:/voltha-docs>`_ , `docs.voltha.org <https://docs.voltha.org>`_
      - ``2.12.25``
      - ``N/A``
-     - `X <https://gerrit.opencord.org/plugins/gitiles/voltha-docs/+/refs/tags/2.12.25>`__
-     - `X <https://github.com/opencord/voltha-docs/releases/tag/2.12.25>`__
+     - `X <:vol-ger:/voltha-docs/+/refs/tags/2.12.25>`__
+     - `X <:vol-git:/voltha-docs/releases/tag/2.12.25>`__
      -
      -
      -
      - ``N``
    * - `bbsim <https://gerrit.opencord.org/gitweb?p=bbsim.git;a=tree>`__
      - ``1.16.3+``
-     - ``4.8.6`` `chart <https://gerrit.opencord.org/plugins/gitiles/voltha-helm-charts/+/refs/heads/voltha-2.12/bbsim/Chart.yaml>`__
-     - `X <https://gerrit.opencord.org/plugins/gitiles/bbsim>`__
-     - `X <https://github.com/opencord/bbsim/tree/v1.14.4>`__
+     - ``4.8.6`` `chart <:vol-ger:/voltha-helm-charts/+/refs/heads/voltha-2.12/bbsim/Chart.yaml>`__
+     - `X <:vol-ger:/bbsim>`__
+     - `X <:vol-git:/bbsim/tree/v1.14.4>`__
      - `X <https://hub.docker.com/layers/voltha/bbsim/1.14.4/images/sha256-c23de193c1d7cf8d32c48edfbec4bfa6c47dbeecd4b31d040da0255eeab2ec58?context=explore>`__
      - ``?``
      - ``?``
      - ``N``
    * - `Bbsim-sadis-server <https://gerrit.opencord.org/gitweb?p=bbsim-sadis-server.git;a=tree>`__
-     - `0.3.6 <https://gerrit.opencord.org/plugins/gitiles/bbsim-sadis-server/+/refs/heads/voltha-2.12/VERSION>`_
-     - `0.3.3 <https://gerrit.opencord.org/plugins/gitiles/voltha-helm-charts/+/refs/heads/voltha-2.12/voltha-infra/Chart.yaml#45>`_
-     - `X <https://gerrit.opencord.org/plugins/gitiles/bbsim-sadis-server/+/refs/tags/v0.3.6/VERSION>`__
-     - `X <https://github.com/opencord/bbsim-sadis-server/releases/tag/v0.3.6>`__
+     - `0.3.6 <:vol-ger:/bbsim-sadis-server/+/refs/heads/voltha-2.12/VERSION>`_
+     - `0.3.3 <:vol-ger:/voltha-helm-charts/+/refs/heads/voltha-2.12/voltha-infra/Chart.yaml#45>`_
+     - `X <:vol-ger:/bbsim-sadis-server/+/refs/tags/v0.3.6/VERSION>`__
+     - `X <:vol-git:/bbsim-sadis-server/releases/tag/v0.3.6>`__
      - `X <https://hub.docker.com/layers/voltha/bbsim-sadis-server/0.3.6/images/sha256-0ea9df1be13f8b1d0a8314cbf0e0800e4a4b7e2920ae3ce5e119abddb9359350?context=explore>`__
      -
      -
      - ``N``
    * - `voltctl <https://gerrit.opencord.org/gitweb?p=voltctl.git;a=tree>`_
-     - `1.10.2 <https://gerrit.opencord.org/plugins/gitiles/voltctl/+/refs/heads/voltha-2.12/VERSION>`_
+     - `1.10.2 <:vol-ger:/voltctl/+/refs/heads/voltha-2.12/VERSION>`_
      - ``N/A``
-     - `X <https://gerrit.opencord.org/plugins/gitiles/voltctl/+/refs/tags/v1.10.2>`__
-     - `? <https://github.com/opencord/voltctl/releases/tag/v1.10.2>`_
+     - `X <:vol-ger:/voltctl/+/refs/tags/v1.10.2>`__
+     - `? <:vol-git:/voltctl/releases/tag/v1.10.2>`_
      - ``N/A``
      - `X <https://pkg.go.dev/github.com/opencord/voltctl@v1.10.2>`__
      - ``N/A``
@@ -543,13 +543,13 @@
    * -
      -
    * - Helm Charts (voltha-helm-charts)
-     - `3.3.0 <https://gerrit.opencord.org/plugins/gitiles/voltha-helm-charts/+/refs/heads/voltha-2.12/VERSION>`_
+     - `3.3.0 <:vol-ger:/voltha-helm-charts/+/refs/heads/voltha-2.12/VERSION>`_
    * - Voltha
-     - `2.12.17 <https://gerrit.opencord.org/plugins/gitiles/voltha-helm-charts/+/refs/heads/master/voltha/Chart.yaml#20>`_
+     - `2.12.17 <:vol-ger:/voltha-helm-charts/+/refs/heads/master/voltha/Chart.yaml#20>`_
    * - Voltha-infra
-     - `2.12.6 <https://gerrit.opencord.org/plugins/gitiles/voltha-helm-charts/+/refs/heads/master/voltha-infra/Chart.yaml#37>`__
+     - `2.12.6 <:vol-ger:/voltha-helm-charts/+/refs/heads/master/voltha-infra/Chart.yaml#37>`__
    * - Voltha-stack
-     - `2.12.9 <https://gerrit.opencord.org/plugins/gitiles/voltha-helm-charts/+/refs/heads/master/voltha-stack/Chart.yaml#37>`_
+     - `2.12.9 <:vol-ger:/voltha-helm-charts/+/refs/heads/master/voltha-stack/Chart.yaml#37>`_
 
 BAL Version
 +++++++++++
@@ -653,8 +653,3 @@
   - `Wiki <https://wiki.opencord.org>`_
 
 |
-
-.. |jira-opencord|  replace:: replacement https://jira.opencord.org/browse
-.. |mvn-artifact|   replace:: replacement https://mvnrepository.com/artifact/org.opencord
-.. |mvn-aaa|        replace:: replacement https://mvnrepository.com/artifact/org.opencord/aaa
-.. |mvn-olt|        replace:: replacement |mvn-artifact|/olt
diff --git a/sphinx_conf/linkcheck_ignore.py b/sphinx_conf/linkcheck_ignore.py
index 3401c3d..0783de5 100644
--- a/sphinx_conf/linkcheck_ignore.py
+++ b/sphinx_conf/linkcheck_ignore.py
@@ -1,9 +1,24 @@
 # -*- coding: utf-8 -*-
-#
-# Configuration file for the Sphinx documentation builder.
-#
 # -----------------------------------------------------------------------
-
+# Copyright 2017-2024 Open Networking Foundation Contributors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -----------------------------------------------------------------------
+# SPDX-FileCopyrightText: 2017-2024 Open Networking Foundation Contributors
+# SPDX-License-Identifier: Apache-2.0
+# -----------------------------------------------------------------------
+# Intent: Configuration file for the Sphinx documentation builder.
+# -----------------------------------------------------------------------
 
 # -- Options for linkcheck ---------------------------------------------------
 # The link checker strips off .md from links and then complains
@@ -23,6 +38,8 @@
         r'https://mvnrepository.com/artifact/org.mockito/mockito-all',
         r'https://mvnrepository.com/artifact/com.h3xstream.findsecbugs/findsecbugs-plugin',
         r'https://mvnrepository.com/artifact/com.github.spotbugs/spotbugs-maven-plugin',
+        r'\s+/release_notes/voltha-2.12\s+',
+        r'\s+/release_notes/voltha_2.12.rst',
     ]
 
 linkcheck_ignore.extend([