diff --git a/doc/source/container_integration/figures/cak1614112389132.png b/doc/source/container_integration/figures/cak1614112389132.png
new file mode 100644
index 000000000..7196f30c0
Binary files /dev/null and b/doc/source/container_integration/figures/cak1614112389132.png differ
diff --git a/doc/source/container_integration/figures/gvf1614702096862.png b/doc/source/container_integration/figures/gvf1614702096862.png
new file mode 100644
index 000000000..6d40b156a
Binary files /dev/null and b/doc/source/container_integration/figures/gvf1614702096862.png differ
diff --git a/doc/source/container_integration/kubernetes/create-test-and-terminate-a-ptp-notification-demo.rst b/doc/source/container_integration/kubernetes/create-test-and-terminate-a-ptp-notification-demo.rst
new file mode 100644
index 000000000..db282f38f
--- /dev/null
+++ b/doc/source/container_integration/kubernetes/create-test-and-terminate-a-ptp-notification-demo.rst
@@ -0,0 +1,164 @@
+
+.. jff1614105111370
+.. _create-test-and-terminate-a-ptp-notification-demo:
+
+===================================================
+Create, Test, and Terminate a PTP Notification Demo
+===================================================
+
+This section provides instructions on accessing, creating, testing and
+terminating a **ptp-notification-demo**.
+
+.. rubric:: |context|
+
+
+Use the following procedure to copy the tarball from |dnload-loc|, create, test,
+and terminate a ptp-notification-demo.
+
+.. rubric:: |proc|
+
+
+.. _create-test-and-terminate-a-ptp-notification-demo-steps-irz-5w4-t4b:
+
+#. Copy the **ptp-notification-demo\_v1.0.2.tgz** file from |prod-long|
+ at `http://mirror.starlingx.cengn.ca/mirror/starlingx/
+ `__ to yor system, and extract its content.
+
+ .. note::
+ The tarball includes the docker file and code to build the reference
+ API application, and the Helm chart to install the Sidecar along with
+ the application.
+
+ The following files are part of the tarball:
+
+
+ - Helm charts
+
+
+ - Chart.yaml
+
+ - values.yaml
+
+ - \_helpers.tpl
+
+ - configmap.yaml
+
+ - deployment.yaml
+
+ - .helmignore
+
+ - ptp-notification-override.yaml
+
+ - app\_start.sh
+
+ - sidecar\_start.sh
+
+
+ - notification-docker
+
+
+ - Dockerfile
+
+ - api
+
+
+
+ .. note::
+ The demo uses the following images:
+
+
+ - starlingx/notificationclient-base:stx.5.0-v1.0.3
+
+ - ptp-base:1.0.1
+
+
+#. Build the **ptp-base:1.0.1** image using the following commands.
+
+ .. code-block:: none
+
+ $ tar xvf ptp-notification-demo_.tgz
+ $ cd ~/notification-dockers/ptp-base/
+ $ sudo docker build . -t ptp-base:1.0.1
+ $ sudo docker save ptp-base:1.0.1 -o ptp-base.1.0.1.tar
+ $ sudo ctr -n k8s.io image import ./ptp-base.1.0.1.tar
+ $ cd ~/charts
+ $ tar xvf ptp-notification-demo-1.tgz
+
+ .. note::
+ For |AIO|-SX and AIO-DX systems, ptp-base.1.0.1.tar should be copied to
+ each node and the import command, :command:`sudo ctr -n k8s.io image
+ import ./ptp-base.1.0.1.tar` should be run on each node.
+
+#. Install the demo's pod using the following commands.
+
+ .. note::
+ This pod includes two containers, Sidecar and the referenced API
+ application.
+
+ .. code-block:: none
+
+ $ kubectl create namespace ptpdemo
+ $ helm install -n notification-demo ~/charts/ptp-notification-demo -f ~/charts/ptp-notification-demo/ptp-notification-override.yaml
+ $ kubectl get pods -n ptpdemo
+
+ .. code-block:: none
+
+ NAME READY STATUS RESTARTS AGE
+ notification-demo-ptp-notification-demo-cf7b65c47-s5jk6 2/2 Running 0 5m50s
+
+#. Test the **ptp-notification** demo.
+
+
+ #. Display the app logs using the following command.
+
+ .. code-block:: none
+
+ $ kubectl logs -f notification-demo-ptp-notification-demo- -c ptp-notification-demo-app -n ptpdemo
+
+
+#. In another terminal, access the application container.
+
+ .. code-block:: none
+
+ $ kubectl exec -it notification-demo-ptp-notification-demo- -c ptp-notification-demo-app -n ptpdemo -- bash
+
+
+ #. Check if you can pull |PTP| status using the REST API.
+
+ .. code-block:: none
+
+ $ curl -v -H 'Content-Type: application/json' http://127.0.0.1:8080/ocloudNotifications/v1/PTP/CurrentState
+
+ #. Subscribe to |PTP| notifications.
+
+ .. code-block:: none
+
+ $ curl -v -d '{"ResourceType": "PTP", "ResourceQualifier": {"NodeName": "controller-0"}, "EndpointUri": "http://127.0.0.1:9090/v1/resource_status/ptp"}' -H 'Content-Type: application/json' -X POST http://127.0.0.1:${SIDECAR_API_PORT}/ocloudNotifications/v1/subscriptions |python -m json.tool
+
+ #. Retrieve a list of subscriptions.
+
+ .. code-block:: none
+
+ $ curl -v -H 'Content-Type: application/json' http://127.0.0.1:${SIDECAR_API_PORT}/ocloudNotifications/v1/subscriptions |python -m json.tool
+
+ For example, to get a specific subscription, use the following command.
+
+ .. code-block:: none
+
+ $ curl -v -H 'Content-Type: application/json' http://127.0.0.1:${SIDECAR_API_PORT}/ocloudNotifications/v1/subscriptions/
+
+ #. To delete a specific subscription with the subscription ID, run the
+ following command.
+
+ .. code-block:: none
+
+ $ curl -X DELETE -v -H 'Content-Type: application/json' http://127.0.0.1:${SIDECAR_API_PORT}/ocloudNotifications/v1/subscriptions/
+
+
+#. Terminate the demo using the following command.
+
+ .. code-block:: none
+
+ $ helm del --purge notification-demo
+
+
diff --git a/doc/source/container_integration/kubernetes/index.rst b/doc/source/container_integration/kubernetes/index.rst
new file mode 100644
index 000000000..e8869feb5
--- /dev/null
+++ b/doc/source/container_integration/kubernetes/index.rst
@@ -0,0 +1,19 @@
+=====================
+Container Integration
+=====================
+
+----------------
+PTP Notification
+----------------
+
+.. toctree::
+ :maxdepth: 1
+
+ ptp-notifications-overview
+ install-ptp-notifications
+ remove-ptp-notifications
+ override-default-application-values
+ integrate-the-application-with-notification-client-sidecar
+ create-test-and-terminate-a-ptp-notification-demo
+
+
diff --git a/doc/source/container_integration/kubernetes/install-ptp-notifications.rst b/doc/source/container_integration/kubernetes/install-ptp-notifications.rst
new file mode 100644
index 000000000..2ff86833d
--- /dev/null
+++ b/doc/source/container_integration/kubernetes/install-ptp-notifications.rst
@@ -0,0 +1,132 @@
+
+.. xqd1614091832213
+.. _install-ptp-notifications:
+
+=========================
+Install PTP Notifications
+=========================
+
+|PTP| notification is packaged as an Armada system application and is managed
+using the :command:`system application` and :command:`system-helm-override`
+commands.
+
+
+.. rubric:: |context|
+
+
+|prod| provides the capability for application\(s\) to subscribe to
+asynchronous |PTP| status notifications and pull for the |PTP| state on demand.
+
+.. rubric:: |prereq|
+
+
+.. _install-ptp-notifications-ul-ydy-ggf-t4b:
+
+- The |PTP| port must be configured as Subordinate mode \(Slave mode\). For
+ more information, see,
+
+.. xbooklink :ref:`|prod-long| System Configuration
+ `:
+
+
+- :ref:`Configuring PTP Service Using Horizon `
+
+- :ref:`Configuring PTP Service Using the CLI `
+
+
+
+.. rubric:: |context|
+
+
+Use the following steps to install the **ptp-notification** application.
+
+
+.. rubric:: |proc|
+
+
+#. Label the controller\(s\).
+
+
+ #. Source the platform environment.
+
+ .. code-block:: none
+
+ $ source /etc/platform/openrc
+ ~(keystone_admin)]$
+
+ #. Assign the |PTP| registration label to the controller\(s\).
+
+ .. code-block:: none
+
+ ~(keystone_admin)]$ system host-label-assign controller-0 ptp-registration=true
+ ~(keystone_admin)]$ system host-label-assign controller-1 ptp-registration=true
+
+ #. Assign the |PTP| notification label to the node that is configured with
+ a Slave |PTP| port. For example:
+
+ .. code-block:: none
+
+ ~(keystone_admin)]$ system host-label-assign controller-0 ptp-notification=true
+
+
+#. Upload the |PTP| application using the following command:
+
+ .. code-block:: none
+
+ ~(keystone_admin)]$ system application-upload /usr/local/share/applications/helm/ptp-notification-1.0-26.tgz
+
+#. Verify the |PTP| application has been uploaded.
+
+ .. code-block:: none
+
+ ~(keystone_admin)]$ system application-list
+
+#. Apply the |PTP| notification application.
+
+ .. code-block:: none
+
+ $ system application-apply ptp-notification
+
+#. Monitor the status.
+
+ .. code-block:: none
+
+ $ watch –n 5 system application-list
+
+ and/or
+
+ .. code-block:: none
+
+ $ watch kubectl get pods –n notification
+
+ The default configuration for |PTP| notification pod is:
+
+
+ - |PTP|-notification pod:
+
+
+ - Runs as a daemonset \(1 pod per node with label **ptp-notification=true**\)
+
+
+ - Three containers:
+
+
+ - ptp-notification-rabbitmq
+
+ - ptp-notification-location
+
+ - ptp-notification-ptptracking
+
+
+ - Registration pod:
+
+
+ - Runs as a deployment on nodes labeled with **ptp-registration=true**
+
+ - Replica count of 1
+
+ - One container: Rabbitmq
+
+
+
+
diff --git a/doc/source/container_integration/kubernetes/integrate-the-application-with-notification-client-sidecar.rst b/doc/source/container_integration/kubernetes/integrate-the-application-with-notification-client-sidecar.rst
new file mode 100644
index 000000000..e35f90f8b
--- /dev/null
+++ b/doc/source/container_integration/kubernetes/integrate-the-application-with-notification-client-sidecar.rst
@@ -0,0 +1,52 @@
+
+.. yxg1614092306444
+.. _integrate-the-application-with-notification-client-sidecar:
+
+==========================================================
+Integrate the Application with Notification Client Sidecar
+==========================================================
+
+This section describes the **ptp-notification-demo**, and provides instructions
+for enabling communication between the Sidecar and the application via a REST
+API.
+
+
+.. rubric:: |context|
+
+
+The integration between the application is done with the use of a Sidecar. The
+Sidecar runs as a container along with the application in the same pod. The
+application and the Sidecar communicate via a REST API. See the figure below.
+
+.. note::
+ In this demo, we provide a referenced API application.
+
+
+.. rubric:: |prereq|
+
+
+The following prerequisites are required before the integration:
+
+
+.. _integrate-the-application-with-notification-client-sidecar-ul-iyd-mxf-t4b:
+
+- The cloud is configured with a node that supports the Subordinate mode \(Slave mode\).
+
+- The cloud is labeled with **ptp-registration=true**, and **ptp-notification=true**.
+
+- The **ptp-notification-armada-app** application is installed successfully.
+
+- The application supports the |PTP| Notifications API.
+
+
+.. image:: ../figures/cak1614112389132.png
+ :width: 800
+
+
+
+For instructions on creating, testing and terminating a
+**ptp-notification-demo**, see, :ref:`Create, Test, and Terminate |PTP|
+Notification Demo `.
+
+
+
diff --git a/doc/source/container_integration/kubernetes/override-default-application-values.rst b/doc/source/container_integration/kubernetes/override-default-application-values.rst
new file mode 100644
index 000000000..d56056f6b
--- /dev/null
+++ b/doc/source/container_integration/kubernetes/override-default-application-values.rst
@@ -0,0 +1,60 @@
+
+.. bdx1614099833159
+.. _override-default-application-values:
+
+===================================
+Override Default Application Values
+===================================
+
+You can override default application values using the commands described in this section.
+
+
+
+.. rubric:: |proc|
+
+
+#. View existing values.
+
+ .. code-block:: none
+
+ ~(keystone_admin)]$ system helm-override-show ptp-notification
+ ptp-notification notification
+
+#. Create a yaml file and update the fields that require Helm overrides.
+
+ .. code-block:: none
+
+ cat ~/override.yaml
+ ptptracking:
+ device:
+ holdover_seconds: 25
+ poll_freq_seconds: 2
+
+#. Apply the values.
+
+ Application values can be added by the user and applied, using the following commands.
+
+ .. note::
+ The application could be in the "uploaded" or "applied" state.
+
+ .. code-block:: none
+
+ ~(keystone_admin)]$ system helm-override-update ptp-notification ptp-notification notification -–values <>
+
+ .. code-block:: none
+
+ ~(keystone_admin)]$ system application-apply ptp-notification
+
+ where the values are:
+
+ **simulated**
+ value must be 'false' for a normal operation \(used only for troubleshooting\).
+
+ **holdover\_seconds**
+ value is the holdover time provided by the |NIC| specification. The default is 15 seconds.
+
+ **poll\_freq\_seconds**
+ is the frequency that the tracking function monitors the ptp4l to
+ derive the |PTP| sync state. The default is 2 seconds.
+
+
diff --git a/doc/source/container_integration/kubernetes/ptp-notifications-overview.rst b/doc/source/container_integration/kubernetes/ptp-notifications-overview.rst
new file mode 100644
index 000000000..833ae9873
--- /dev/null
+++ b/doc/source/container_integration/kubernetes/ptp-notifications-overview.rst
@@ -0,0 +1,92 @@
+
+.. nko1614009294405
+.. _ptp-notifications-overview:
+
+==========================
+PTP Notifications Overview
+==========================
+
+|prod-long| supports applications that rely on |PTP| for synchronization. These
+applications are able to receive |PTP| status notifications from
+|prod-long| hosting the application.
+
+|prod-long| provides a Sidecar, which runs with the hosted application in the
+same pod and communicates with the application via a REST API.
+
+|prod-long| supports the following features:
+
+
+.. _ptp-notifications-overview-ul-ggf-x1f-t4b:
+
+- Provides the capability to enable application\(s\) subscribe to |PTP| status
+ notifications and pull for the |PTP| state on demand.
+
+- Uses a REST API to communicate |PTP| notifications to the application.
+
+- Enables operators to install the **ptp-notification-armada-app**, Sidecar
+ container, and the application supporting the REST API. For more information,
+ see, `https://docs.starlingx.io/api-ref/ptp-notification-armada-app/index.html
+ `__.
+
+- Supports the **ptp4l** module and |PTP| port that is configured in
+ Subordinate mode \(Slave mode\).
+
+- The |PTP| status notifications are derived based on the following conditions:
+
+
+
+.. _ptp-notifications-overview-simpletable-n1r-dcf-t4b:
+
+
+.. table::
+ :widths: auto
+
+ +---------------------+---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
+ | Clock Status | Status | Description |
+ +=====================+===================================================+====================================================================================================================================================+
+ | Freerun | Clock is out of sync state | - If portState is not "SLAVE" or ClockClass value is NOT "6, 7 or 135" or timeTraceable flag is FALSE. |
+ | | | |
+ | | | - If holdover time exceeds its provided value. |
+ | | | |
+ | | | - If PMC, ptp4l.conf, ptp4l or phc2sys are not accessible. |
+ +---------------------+---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
+ | Locked | Clock is in sync state | If portState is "SLAVE" and ClockClass value is "6, 7 or 135" and timeTraceable flag is TRUE and PMC, ptp4l.conf, ptp4l or phc2sys are accessible. |
+ +---------------------+---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
+ | Holdover | Clock is in holdover state | If the state is transitioned from "Locked" to "Freerun" AND phc2sys is accessible, and holdover time does not expire. |
+ +---------------------+---------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+
+
+**Integrated Containerized Applications**
+
+
+.. _ptp-notifications-overview-ul-rn5-5w2-t4b:
+
+- Applications that rely on |PTP| for synchronization have the ability to
+ retrieve the relevant data that indicates the status of the PHC clock related
+ to the worker node that the application is running on.
+
+- Once an application subscribes to |PTP| notifications it receives the initial
+ data that shows the PHC synchronization state, and receives notifications when
+ there is a state change to the sync status and/or per request for notification
+ \(pull\).
+
+
+The figure below describes the subscription framework for |PTP| notifications.
+
+.. image:: ../figures/gvf1614702096862.png
+
+
+
+For more information on |PTP| notifications, see:
+
+
+.. _ptp-notifications-overview-ul-xqg-2wg-t4b:
+
+- :ref:`Install PTP Notifications `
+
+- :ref:`Remove PTP Notifications `
+
+- :ref:`Override Default Application Values `
+
+- :ref:`Integrate the Application with Notification Client Sidecar `
+
+
diff --git a/doc/source/container_integration/kubernetes/remove-ptp-notifications.rst b/doc/source/container_integration/kubernetes/remove-ptp-notifications.rst
new file mode 100644
index 000000000..80ff50ce6
--- /dev/null
+++ b/doc/source/container_integration/kubernetes/remove-ptp-notifications.rst
@@ -0,0 +1,41 @@
+
+.. nie1614092105640
+.. _remove-ptp-notifications:
+
+========================
+Remove PTP Notifications
+========================
+
+You can remove all pods and Kubernetes resources created during the Armada
+application deployment.
+
+
+Use the following procedure to remove |PTP| notifications.
+
+
+.. rubric:: |proc|
+
+
+.. _remove-ptp-notifications-steps-klx-gnf-t4b:
+
+#. Remove all pods and other Kubernetes resources created during the Armada
+ deployment, using the following command:
+
+ .. code-block:: none
+
+ ~(keystone_admin)]$ system application-remove ptp-notification
+
+#. Delete the ptp-notification from sysinv.
+
+ .. code-block:: none
+
+ ~(keystone_admin)]$ system application-delete ptp-notification
+
+#. Remove labels applied to controller-0, using the following commands, for example:
+
+ .. code-block:: none
+
+ ~(keystone_admin)]$ system host-label-remove controller-0 ptp-notification
+ ~(keystone_admin)]$ system host-label-remove controller-0 ptp-registration
+
+
diff --git a/doc/source/index.rst b/doc/source/index.rst
index f7d1ed265..ce1d8f3b1 100755
--- a/doc/source/index.rst
+++ b/doc/source/index.rst
@@ -165,6 +165,15 @@ Backup and restore
backup/index
+---------------------
+Container integration
+---------------------
+
+.. toctree::
+ :maxdepth: 2
+
+ container_integration/kubernetes/index
+
---------
Reference
---------