Merge "Istanbul release notes for DCAE"
diff --git a/docs/sections/services/kpi-computation-ms/index.rst b/docs/sections/services/kpi-computation-ms/index.rst
index fb93564..5bbefa1 100644
--- a/docs/sections/services/kpi-computation-ms/index.rst
+++ b/docs/sections/services/kpi-computation-ms/index.rst
@@ -24,6 +24,7 @@
     :maxdepth: 1
 
     ./installation.rst
+    ./installation-helm.rst
 
 Kpi Computation MS Configurations
 ---------------------------------
diff --git a/docs/sections/services/kpi-computation-ms/installation-helm.rst b/docs/sections/services/kpi-computation-ms/installation-helm.rst
new file mode 100644
index 0000000..57128da
--- /dev/null
+++ b/docs/sections/services/kpi-computation-ms/installation-helm.rst
@@ -0,0 +1,115 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. _kpi-installation-helm:
+
+
+Helm Installation
+=================
+
+Kpi Computation microservice can be deployed using helm charts in oom repository.
+
+
+Deployment Pre-requisites
+~~~~~~~~~~~~~~~~~~~~~~~~~
+- DMaaP pods should be up and running.
+
+- PM mapper service should be running.
+
+- Policy pods should be running.
+
+- Required policies should be created and pushed to the policy component. Steps for creating and pushing policy models:
+
+     1. Log in to policy-drools-pdp-0 container
+
+             .. code-block:: bash
+
+               kubectl exec -ti --namespace <namespace> policy-pdp-0 bash
+
+
+     2. Create policy type:
+
+             .. code-block:: bash
+
+              curl -k --silent --user 'healthcheck:zb!XztG34' -X POST "https://policy-api:6969/policy/api/v1/policytypes" -H "Accept: application/json" -H "Content-Type: application/json" --data '{"policy_types":{"onap.policies.monitoring.docker.kpims.app":{"derived_from":"onap.policies.Monitoring:1.0.0","description":"KPI ms policy type","properties":{"domain":{"required":true,"type":"string"},"methodForKpi":{"type":"list","required":true,"entry_schema":{"type":"policy.data.methodForKpi_properties"}}},"version":"1.0.0"}},"data_types":{"policy.data.methodForKpi_properties":{"derived_from":"tosca.nodes.Root","properties":{"eventName":{"type":"string","required":true},"controlLoopSchemaType":{"type":"string","required":true},"policyScope":{"type":"string","required":true},"policyName":{"type":"string","required":true},"policyVersion":{"type":"string","required":true},"kpis":{"type":"list","required":true,"entry_schema":{"type":"policy.data.kpis_properties"}}}},"policy.data.kpis_properties":{"derived_from":"tosca.nodes.Root","properties":{"measType":{"type":"string","required":true},"operation":{"type":"string","required":true},"operands":{"type":"string","required":true}}}},"tosca_definitions_version":"tosca_simple_yaml_1_1_0"}'
+
+     3. Create monitoring policy:
+
+             .. code-block:: bash
+
+              curl -k --user 'healthcheck:zb!XztG34' -X POST "https://policy-api:6969/policy/api/v1/policytypes/onap.policies.monitoring.docker.kpims.app/versions/1.0.0/policies" -H "Accept: application/json" -H "Content-Type: application/json" --data '{"name":"ToscaServiceTemplateSimple","topology_template":{"policies":[{"com.Config_KPIMS_CONFIG_POLICY":{"type":"onap.policies.monitoring.docker.kpims.app","type_version":"1.0.0","version":"1.0.0","metadata":{"policy-id":"com.Config_KPIMS_CONFIG_POLICY","policy-version":"1"},"name":"com.Config_KPIMS_CONFIG_POLICY","properties":{"domain":"measurementsForKpi","methodForKpi":[{"eventName":"perf3gpp_CORE-AMF_pmMeasResult","controlLoopSchemaType":"SLICE","policyScope":"resource=networkSlice;type=configuration","policyName":"configuration.dcae.microservice.kpi-computation","policyVersion":"v0.0.1","kpis":[{"measType":"AMFRegNbr","operation":"SUM","operands":"RM.RegisteredSubNbrMean"}]},{"eventName":"perf3gpp_CORE-UPF_pmMeasResult","controlLoopSchemaType":"SLICE","policyScope":"resource=networkSlice;type=configuration","policyName":"configuration.dcae.microservice.kpi-computation","policyVersion":"v0.0.1","kpis":[{"measType":"UpstreamThr","operation":"SUM","operands":"GTP.InDataOctN3UPF"},{"measType":"DownstreamThr","operation":"SUM","operands":"GTP.OutDataOctN3UPF"}]}]}}}]},"tosca_definitions_version":"tosca_simple_yaml_1_1_0","version":"1.0.0"}'
+
+
+     4. Push monitoring policy:
+
+             .. code-block:: bash
+
+               curl --silent -k --user 'healthcheck:zb!XztG34' -X POST "https://policy-pap:6969/policy/pap/v1/pdps/policies" -H "Accept: application/json" -H "Content-Type: application/json" --data '{"policies":[{"policy-id":"com.Config_KPIMS_CONFIG_POLICY","policy-version":1}]}'
+
+Deployment steps
+~~~~~~~~~~~~~~~~
+
+- Default app config values can be updated in oom/kubernetes/dcaegen2-services/components/dcae-kpi-ms/values.yaml.
+
+- Update monitoring policy ID in below configuration which is used to enable Policy-Sync Side car container to be deployed and retrieves active policy configuration.
+
+  .. code-block :: bash
+
+    dcaePolicySyncImage: onap/org.onap.dcaegen2.deployments.dcae-services-policy-sync:1.0.1
+    policies:
+    policyID:  |
+        '["com.Config_KPIMS_CONFIG_POLICY"]'
+
+- Enable KPI MS component in oom/kubernetes/dcaegen2-services/values.yaml
+
+  .. code-block:: bash
+
+    dcae-kpi-ms:
+      enabled: true
+
+- Make the chart and deploy using the following command:
+
+  .. code-block:: bash
+
+    cd oom/kubernetes/
+    make dcaegen2-services
+    helm install dev-dcaegen2-services dcaegen2-services --namespace <namespace> --set global.masterPassword=<password>
+
+- To deploy only KPI MS:
+
+  .. code-block:: bash
+
+    helm install dev-dcae-kpi-ms dcaegen2-services/components/dcae-kpi-ms --namespace <namespace> --set global.masterPassword=<password>
+
+- To Uninstall
+
+  .. code-block:: bash
+
+    helm uninstall dev-dcae-kpi-ms
+
+
+Application Configurations
+--------------------------
++-------------------------------+------------------------------------------------+
+|Configuration                  | Description                                    |
++===============================+================================================+
+|Streams_subscribes             | Dmaap topics that the MS will consume messages |
++-------------------------------+------------------------------------------------+
+|Streams_publishes              | Dmaap topics that the MS will publish messages |
++-------------------------------+------------------------------------------------+
+|cbsPollingInterval             | Polling Interval for consuming config data from|
+|                               | CBS                                            |
++-------------------------------+------------------------------------------------+
+|pollingInterval                | Polling Interval for consuming dmaap messages  |
++-------------------------------+------------------------------------------------+
+|pollingTimeout                 | Polling timeout for consuming dmaap messages   |
++-------------------------------+------------------------------------------------+
+|dmaap.server                   | Location of message routers                    |
++-------------------------------+------------------------------------------------+
+|cg                             | DMAAP Consumer group for subscription          |
++-------------------------------+------------------------------------------------+
+|cid                            | DMAAP Consumer id for subscription             |
++-------------------------------+------------------------------------------------+
+|trust_store_path               | Location of trust.jks file                     |
++-------------------------------+------------------------------------------------+
+|trust_store_pass_path          | Location of trust.pass file                    |
++-------------------------------+------------------------------------------------+
diff --git a/docs/sections/services/pm-subscription-handler/configuration.rst b/docs/sections/services/pm-subscription-handler/configuration.rst
index 7b8b721..0be8b61 100644
--- a/docs/sections/services/pm-subscription-handler/configuration.rst
+++ b/docs/sections/services/pm-subscription-handler/configuration.rst
@@ -21,10 +21,6 @@
 +-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------------+
 | replicas                    | Number of instances.                                                                   | integer | True     | 1                                                                                   |
 +-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------------+
-| operational_policy_name     | Name of the operational policy to be executed.                                         | string  | True     | pmsh-operational-policy                                                             |
-+-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------------+
-| control_loop_name           | Name of the control loop.                                                              | string  | True     | pmsh-control-loop                                                                   |
-+-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------------+
 | pm_publish_topic_name       | The topic that PMSH will publish to, and which policy will subscribe to.               | string  | True     | unauthenticated.DCAE_CL_OUTPUT                                                      |
 +-----------------------------+----------------------------------------------------------------------------------------+---------+----------+-------------------------------------------------------------------------------------+
 | policy_feedback_topic_name  | The topic that PMSH will subscribe to, and which policy will publish to.               | string  | True     | unauthenticated.PMSH_CL_INPUT                                                       |
@@ -66,9 +62,8 @@
     {
        "subscription":{
           "subscriptionName":"someExtraPM-All-gNB-R2B",
-          "administrativeState":"UNLOCKED",
-          "fileBasedGP":15,
-          "fileLocation":"/pm/pm.xml",
+          "operationalPolicyName":"operational-policy-name",
+          "controlLoopName":"controlLoop-name",
           "nfFilter":{
              "nfNames":[
                 "^pnf1.*"
@@ -87,6 +82,10 @@
           "measurementGroups":[
              {
                 "measurementGroup":{
+                   "measurementGroupName":"msgroupname",
+                   "administrativeState":"UNLOCKED",
+                   "fileBasedGP":15,
+                   "fileLocation":"/pm/pm.xml",
                    "measurementTypes":[
                       {
                          "measurementType":"EutranCell.*"
@@ -116,21 +115,24 @@
     }
 
 
-+---------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+--------+
-| Field               | Description                                                                                                                                                                | Type | Required | Values |
-+---------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+--------+
-| subscriptionName    | Name of the subscription.                                                                                                                                                  |      |          |        |
-+---------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+--------+
-| administrativeState | Setting a subscription to UNLOCKED will apply the subscription to the NF instances immediately. If it is set to LOCKED, it will not be applied until it is later unlocked. |      |          |        |
-+---------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+--------+
-| fileBasedGP         | The frequency at which measurements are produced.                                                                                                                          |      |          |        |
-+---------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+--------+
-| fileLocation        | Location of Report Output Period file.                                                                                                                                     |      |          |        |
-+---------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+--------+
-| nfFilter            | The network function filter will be used to filter the list of nf's stored in A&AI to produce a subset.                                                                    |      |          |        |
-+---------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+--------+
-| measurementGroups   | List containing measurementGroup.                                                                                                                                          |      |          |        |
-+---------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+--------+
++-----------------------+---------------------------------------------------------------------------------------------------------+--------+----------+--------------------------+
+| Field                 | Description                                                                                             | Type   | Required | Values                   |
++-----------------------+---------------------------------------------------------------------------------------------------------+--------+----------+--------------------------+
+| subscriptionName      | Name of the subscription.                                                                               | string | True     | subscriptionName         |
++-----------------------+---------------------------------------------------------------------------------------------------------+--------+----------+--------------------------+
+| operationalPolicyName | Name of the operational policy to be executed.                                                          | string | True     | operationalPolicyName    |
++-----------------------+---------------------------------------------------------------------------------------------------------+--------+----------+--------------------------+
+| controlLoopName       | Name of the control loop.                                                                               | string | True     | controlLoopName          |
++-----------------------+---------------------------------------------------------------------------------------------------------+--------+----------+--------------------------+
+| nfFilter              | The network function filter will be used to filter the list of nf's stored in A&AI to produce a subset. |  list  | False    |                          |
++-----------------------+---------------------------------------------------------------------------------------------------------+--------+----------+--------------------------+
+| measurementGroups     | List containing measurementGroup.                                                                       |  list  | True     | List of measurementGroup |
++-----------------------+---------------------------------------------------------------------------------------------------------+--------+----------+--------------------------+
+
+.. note::
+  Since release Istanbul of ONAP, PMSH Subscriptions model schema is updated.
+  Subscription model is centric to ``measurementGroup``, for instance any update on attributes administrativeState, fileBasedGP,
+  fileLocation, nfFilter will be applicable to only individual measurementGroup object.
 
 **nfFilter**
 
@@ -176,6 +178,10 @@
 .. code-block:: json
 
     "measurementGroup": {
+       "measurementGroupName":"msgroupname",
+       "administrativeState":"UNLOCKED",
+       "fileBasedGP":15,
+       "fileLocation":"/pm/pm.xml",
        "measurementTypes": [
          {
            "measurementType": "EutranCell.*"
@@ -200,13 +206,21 @@
        ]
     }
 
-+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+
-| Field                 | Description                                                                                                                                       | Type | Required |
-+=======================+===================================================================================================================================================+======+==========+
-| measurementTypes      | List of measurement types. These are regexes, and it is expected that either the CDS blueprint, or NF can parse them. As the PMSH will not do so. | list | True     |
-+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+
-| managedObjectDNsBasic | List of managed object distinguished names.                                                                                                       | list | True     |
-+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+
++-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+--------+
+| Field                 | Description                                                                                                                                                                            | Type | Required | Values |
++=======================+========================================================================================================================================================================================+======+==========+========+
+| measurementGroupName  | Unique identifier for measurementGroup.                                                                                                                                                |      |          |        |
++-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+--------+
+| administrativeState   | Setting a measurementGroup to UNLOCKED will apply the subscription changes to the NF instances immediately. If it is set to LOCKED, it will not be applied until it is later unlocked. |      |          |        |
++-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+--------+
+| fileBasedGP           | The frequency at which measurements are produced.                                                                                                                                      |      |          |        |
++-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+--------+
+| fileLocation          | Location of Report Output Period file.                                                                                                                                                 |      |          |        |
++-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+--------+
+| measurementTypes      | List of measurement types. These are regexes, and it is expected that either the CDS blueprint, or NF can parse them. As the PMSH will not do so.                                      | list | True     |        |
++-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+--------+
+| managedObjectDNsBasic | List of managed object distinguished names.                                                                                                                                            | list | True     |        |
++-----------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------+----------+--------+
 
 .. _Topics:
 
@@ -242,6 +256,7 @@
         "version": "0.0.1",
         "status": {
             "subscriptionName": "subscriptiona",
+            "measurementGroupName":"msgroupname",
             "nfName": "PNF104",
             "changeType": "CREATE",
             "message": "success"
@@ -261,6 +276,11 @@
 PMSH publishes subscriptions to this topic. They will be consumed by an operational policy which will make a request to CDS to
 change the state of the subscription.
 
+.. note::
+  Since release Istanbul of ONAP, PMSH Publish Subscriptions event format is updated.
+  A new attribute ``measurementGroupName`` is added as a unique identifier for ``measurementGroup`` and a single ``measurementGroup`` is associated with
+  PMSH Subscription event.
+
 Example event sent from PMSH:
 
 .. code-block:: json
@@ -268,8 +288,8 @@
     {
        "nfName":"PNF104",
        "ipv4Address": "10.12.13.12",
-       "policyName":"pmsh-operational-policy",
-       "closedLoopControlName":"pmsh-control-loop",
+       "policyName":"operational-policy-name",
+       "closedLoopControlName":"controlLoop-name",
        "blueprintName":"pm_control",
        "blueprintVersion":"1.2.4",
        "changeType":"CREATE",
@@ -278,47 +298,24 @@
           "subscriptionName":"subscriptiona",
           "fileBasedGP":15,
           "fileLocation":"/pm/pm.xml",
-          "measurementGroups":[
-             {
-                "measurementGroup":{
-                   "measurementTypes":[
-                      {
-                         "measurementType":"countera"
-                      },
-                      {
-                         "measurementType":"counterb"
-                      }
-                   ],
-                   "managedObjectDNsBasic":[
-                      {
-                         "DN":"dna"
-                      },
-                      {
-                         "DN":"dnb"
-                      }
-                   ]
+          "measurementGroup":{
+             "measurementGroupName":"msgroupname",
+             "measurementTypes":[
+                {
+                   "measurementType":"countera"
+                },
+                {
+                   "measurementType":"counterb"
                 }
-             },
-             {
-                "measurementGroup":{
-                   "measurementTypes":[
-                      {
-                         "measurementType":"counterc"
-                      },
-                      {
-                         "measurementType":"counterd"
-                      }
-                   ],
-                   "managedObjectDNsBasic":[
-                      {
-                         "DN":"dnc"
-                      },
-                      {
-                         "DN":"dnd"
-                      }
-                   ]
+             ],
+             "managedObjectDNsBasic":[
+                {
+                   "DN":"dna"
+                },
+                {
+                   "DN":"dnb"
                 }
-             }
-          ]
+             ]
+          }
        }
-    }
+    }
\ No newline at end of file
diff --git a/docs/sections/services/pm-subscription-handler/resources/monitoring-policy.json b/docs/sections/services/pm-subscription-handler/resources/monitoring-policy.json
index 6b8570e..f142f8b 100644
--- a/docs/sections/services/pm-subscription-handler/resources/monitoring-policy.json
+++ b/docs/sections/services/pm-subscription-handler/resources/monitoring-policy.json
@@ -1,9 +1,8 @@
 {
    "subscription":{
-      "subscriptionName":"subscriptiona",
-      "administrativeState":"UNLOCKED",
-      "fileBasedGP":15,
-      "fileLocation":"/pm/pm.xml",
+      "subscriptionName":"subscription-name",
+      "operationalPolicyName":"operational-policy-name",
+      "controlLoopName":"controlLoop-name",
       "nfFilter":{
          "nfNames":[
             "^pnf1.*"
@@ -14,11 +13,18 @@
          ],
          "modelVersionIDs":[
             "e80a6ae3-cafd-4d24-850d-e14c084a5ca9"
+         ],
+         "modelNames":[
+            "pnf102"
          ]
       },
       "measurementGroups":[
          {
             "measurementGroup":{
+               "measurementGroupName":"msgroupnamea",
+               "administrativeState":"UNLOCKED",
+               "fileBasedGP":15,
+               "fileLocation":"/pm/pma.xml",
                "measurementTypes":[
                   {
                      "measurementType":"countera"
@@ -39,6 +45,10 @@
          },
          {
             "measurementGroup":{
+               "measurementGroupName":"msgroupnameb",
+               "administrativeState":"UNLOCKED",
+               "fileBasedGP":15,
+               "fileLocation":"/pm/pmb.xml",
                "measurementTypes":[
                   {
                      "measurementType":"counterc"
diff --git a/docs/sections/services/son-handler/index.rst b/docs/sections/services/son-handler/index.rst
index 80f52c7..3d1f0f1 100644
--- a/docs/sections/services/son-handler/index.rst
+++ b/docs/sections/services/son-handler/index.rst
@@ -30,4 +30,5 @@
     :maxdepth: 1
 
     ./installation.rst
+    ./installation-helm.rst
     ./son_handler_troubleshooting.rst
diff --git a/docs/sections/services/son-handler/installation-helm.rst b/docs/sections/services/son-handler/installation-helm.rst
new file mode 100644
index 0000000..97f2822
--- /dev/null
+++ b/docs/sections/services/son-handler/installation-helm.rst
@@ -0,0 +1,207 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. _sonhandler-installation-helm:
+
+
+Helm Installation
+=================
+
+SON handler microservice can be deployed using helm charts in oom repository.
+
+
+Deployment Prerequisites
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+- SON-Handler service requires config-binding-service, policy, dmaap and aaf componenets to be running.
+
+- The following topics must be created in dmaap:
+
+             .. code-block:: bash
+
+                 curl --header "Content-type: application/json" --request POST --data '{"topicName": "DCAE_CL_RSP"}' http://<DMAAP_IP>:3904/events/DCAE_CL_RSP
+                 curl --header "Content-type: application/json" --request POST --data '{"topicName": "unauthenticated.SEC_FAULT_OUTPUT"}' http://<DMAAP_IP>:3904/events/unauthenticated.SEC_FAULT_OUTPUT
+                 curl --header "Content-type: application/json" --request POST --data '{"topicName": "unauthenticated.VES_MEASUREMENT_OUTPUT"}' http://<DMAAP_IP>:3904/events/unauthenticated.VES_MEASUREMENT_OUTPUT
+                 curl --header "Content-type: application/json" --request POST --data '{"topicName": "unauthenticated.DCAE_CL_OUTPUT"}' http://<DMAAP_IP>:3904/events/unauthenticated.DCAE_CL_OUTPUT
+
+
+
+- Policies required for SON-handler service should be created and pushed to the policy component. Steps for creating and pushing policy models:
+
+     1.Login to policy-drools-pdp-0 container
+
+             .. code-block:: bash
+
+               kubectl exec -ti --namespace <namespace> policy-pdp-0 bash
+
+
+     2. Create Modify Config policy:
+
+             .. code-block:: bash
+
+               curl -k --silent --user 'healthcheck:zb!XztG34' -X POST "https://policy-api:6969/policy/api/v1/policytypes/onap.policies.controlloop.operational.common.Drools/versions/1.0.0/policies" -H "Accept: application/json" -H "Content-Type: application/json" --data-raw '{"tosca_definitions_version":"tosca_simple_yaml_1_1_0","topology_template":{"policies":[{"operational.pcihandler":{"type":"onap.policies.controlloop.operational.common.Drools","type_version":"1.0.0","name":"operational.pcihandler","version":"1.0.0","metadata":{"policy-id":"operational.pcihandler"},"properties":{"controllerName":"usecases","id":"ControlLoop-vPCI-fb41f388-a5f2-11e8-98d0-529269fb1459","timeout":900,"abatement":false,"trigger":"unique-policy-id-123-modifyconfig","operations":[{"id":"unique-policy-id-123-modifyconfig","description":"Modify the packet generator","operation":{"actor":"SDNR","operation":"ModifyConfig","target":{"targetType":"PNF"}},"timeout":300,"retries":0,"success":"final_success","failure":"final_failure","failure_timeout":"final_failure_timeout","failure_retries":"final_failure_retries","failure_exception":"final_failure_exception","failure_guard":"final_failure_guard"}]}}}]}}'
+
+     3. Push Modify Config policy:
+
+            .. code-block:: bash
+
+                curl --silent -k --user 'healthcheck:zb!XztG34' -X POST "https://policy-pap:6969/policy/pap/v1/pdps/policies" -H "Accept: application/json" -H "Content-Type: application/json" --data-raw '{"policies":[{"policy-id":"operational.pcihandler","policy-version":1}]}'
+
+
+     4. Create Modify Config ANR policy:
+
+             .. code-block:: bash
+
+               curl -k --silent --user 'healthcheck:zb!XztG34' -X POST "https://policy-api:6969/policy/api/v1/policytypes/onap.policies.controlloop.operational.common.Drools/versions/1.0.0/policies" -H "Accept: application/json" -H "Content-Type: application/json" --data-raw '{"tosca_definitions_version":"tosca_simple_yaml_1_1_0","topology_template":{"policies":[{"operational.sonhandler":{"type":"onap.policies.controlloop.operational.common.Drools","type_version":"1.0.0","name":"operational.sonhandler","version":"1.0.0","metadata":{"policy-id":"operational.sonhandler"},"properties":{"controllerName":"usecases","id":"ControlLoop-vSONH-7d4baf04-8875-4d1f-946d-06b874048b61","timeout":900,"abatement":false,"trigger":"unique-policy-id-123-modifyconfig","operations":[{"id":"unique-policy-id-123-modifyconfig","description":"Modify the packet generator","operation":{"actor":"SDNR","operation":"ModifyConfigANR","target":{"targetType":"PNF"}},"timeout":300,"retries":0,"success":"final_success","failure":"final_failure","failure_timeout":"final_failure_timeout","failure_retries":"final_failure_retries","failure_exception":"final_failure_exception","failure_guard":"final_failure_guard"}]}}}]}}'
+
+
+
+     6. Push Modify Config ANR policy:
+
+           .. code-block:: bash
+
+             curl --silent -k --user 'healthcheck:zb!XztG34' -X POST "https://policy-pap:6969/policy/pap/v1/pdps/policies" -H "Accept: application/json" -H "Content-Type: application/json" '{"policies":[{"policy-id":"operational.sonhandler","policy-version":1}]}'
+
+
+     7. Create policy type:
+
+             .. code-block:: bash
+
+                curl -k --silent --user 'healthcheck:zb!XztG34' -X POST "https://policy-api:6969/policy/api/v1/policytypes" -H "Accept: application/json" -H "Content-Type: application/json" --data-raw '{"policy_types":{"onap.policies.monitoring.docker.sonhandler.app":{"derived_from":"onap.policies.Monitoring:1.0.0","description":"son handler policy type","properties":{"PCI_MODCONFIGANR_POLICY_NAME":{"required":true,"type":"string"},"PCI_MODCONFIG_POLICY_NAME":{"required":true,"type":"string"},"PCI_NEIGHBOR_CHANGE_CLUSTER_TIMEOUT_IN_SECS":{"required":true,"type":"string"},"PCI_OPTMIZATION_ALGO_CATEGORY_IN_OOF":{"required":true,"type":"string"},"PCI_SDNR_TARGET_NAME":{"required":true,"type":"string"}},"version":"1.0.0"}},"tosca_definitions_version":"tosca_simple_yaml_1_1_0"}'
+
+
+     8. Create monitoring policy:
+
+             .. code-block:: bash
+
+               curl -k --silent --user 'healthcheck:zb!XztG34' -X POST "https://policy-api:6969/policy/api/v1/policytypes/onap.policies.monitoring.docker.sonhandler.app/versions/1.0.0/policies" -H "Accept: application/json" -H "Content-Type: application/json" --data-raw '{"name":"ToscaServiceTemplateSimple","topology_template":{"policies":[{"com.Config_PCIMS_CONFIG_POLICY":{"metadata":{"policy-id":"com.Config_PCIMS_CONFIG_POLICY","policy-version":"1"},"name":"com.Config_PCIMS_CONFIG_POLICY","properties":{"PCI_MODCONFIGANR_POLICY_NAME":"ControlLoop-vSONH-7d4baf04-8875-4d1f-946d-06b874048b61","PCI_MODCONFIG_POLICY_NAME":"ControlLoop-vPCI-fb41f388-a5f2-11e8-98d0-529269fb1459","PCI_NEIGHBOR_CHANGE_CLUSTER_TIMEOUT_IN_SECS":60,"PCI_OPTMIZATION_ALGO_CATEGORY_IN_OOF":"OOF-PCI-OPTIMIZATION","PCI_SDNR_TARGET_NAME":"SDNR"},"type":"onap.policies.monitoring.docker.sonhandler.app","type_version":"1.0.0","version":"1.0.0"}}]},"tosca_definitions_version":"tosca_simple_yaml_1_1_0","version":"1.0.0"}'
+
+     9. Push monitoring policy:
+
+             .. code-block:: bash
+
+               curl --silent -k --user 'healthcheck:zb!XztG34' -X POST "https://policy-pap:6969/policy/pap/v1/pdps/policies" -H "Accept: application/json" -H "Content-Type: application/json" --data-raw '{"policies":[{"policy-id":"com.Config_PCIMS_CONFIG_POLICY","policy-version":1}]}'
+
+Deployment Steps
+~~~~~~~~~~~~~~~~
+
+- Default app config values can be updated in oom/kubernetes/dcaegen2-services/components/dcae-son-handler/values.yaml
+
+- Update monitoring policy ID in below configuration which is used to enable Policy-Sync Side car container to be deployed and retrieves active policy configuration.
+
+  .. code-block:: bash
+
+    dcaePolicySyncImage: onap/org.onap.dcaegen2.deployments.dcae-services-policy-sync:1.0.1
+     policies:
+       policyID: |
+       '["com.Config_PCIMS_CONFIG_POLICY"]'
+
+- Update Config db IP address:
+
+  .. code-block:: bash
+
+    sonhandler.configDb.service: http://<configDB-IPAddress>:8080
+
+- Enable sonhandler component in oom/kubernetes/dcaegen2-services/values.yaml
+
+  .. code-block:: bash
+
+    dcae-son-handler:
+        enabled: true
+
+- Make the chart and deploy using the following command:
+
+  .. code-block:: bash
+
+    cd oom/kubernetes/
+    make dcaegen2-services
+    helm install dev-dcaegen2-services dcaegen2-services --namespace <namespace> --set global.masterPassword=<password>
+
+- To deploy only son-handler:
+
+  .. code-block:: bash
+
+    helm install dev-son-handler dcaegen2-services/components/dcae-son-handler --namespace <namespace> --set global.masterPassword=<password>
+
+- To uninstall:
+
+  .. code-block:: bash
+
+    helm uninstall dev-son-handler
+
+
+
+Application Configurations
+--------------------------
++-------------------------------+------------------------------------------------+
+|Configuration                  | Description                                    |
++===============================+================================================+
+|Streams_subscribes             | Dmaap topics that the MS will consume messages |
++-------------------------------+------------------------------------------------+
+|Streams_publishes              | Dmaap topics that the MS will publish messages |
++-------------------------------+------------------------------------------------+
+|postgres.host                  | Host where the postgres database is running    |
++-------------------------------+------------------------------------------------+
+|postgres.port                  | Host where the postgres database is running    |
++-------------------------------+------------------------------------------------+
+|postgres.username              | Postgres username                              |
++-------------------------------+------------------------------------------------+
+|postgres.password              | Postgres password                              |
++-------------------------------+------------------------------------------------+
+|sonhandler.pollingInterval     | Polling Interval for consuming dmaap messages  |
++-------------------------------+------------------------------------------------+
+|sonhandler.pollingTimeout      | Polling timeout for consuming dmaap messages   |
++-------------------------------+------------------------------------------------+
+|sonhandler.numSolutions        | Number for solutions for OOF optimization      |
++-------------------------------+------------------------------------------------+
+|sonhandler.minCollision        | Minimum collision criteria to trigger OOF      |
++-------------------------------+------------------------------------------------+
+|sonhandler.minConfusion        | Minimum confusion criteria to trigger OOF      |
++-------------------------------+------------------------------------------------+
+|sonhandler.maximumClusters     | Maximum number of clusters MS can process      |
++-------------------------------+------------------------------------------------+
+|sonhandler.badThreshold        | Bad threshold for Handover success rate        |
++-------------------------------+------------------------------------------------+
+|sonhandler.poorThreshold       | Poor threshold for Handover success rate       |
++-------------------------------+------------------------------------------------+
+|sonhandler.namespace           | Namespace where MS is going to be deployed     |
++-------------------------------+------------------------------------------------+
+|sonhandler.namespace           | Namespace where MS is going to be deployed     |
++-------------------------------+------------------------------------------------+
+|sonhandler.namespace           | Namespace where MS is going to be deployed     |
++-------------------------------+------------------------------------------------+
+|sonhandler.sourceId            | Source ID of the Microservice (to OOF)         |
++-------------------------------+------------------------------------------------+
+|sonhandler.dmaap.server        | Location of message routers                    |
++-------------------------------+------------------------------------------------+
+|sonhandler.bufferTime          | Buffer time for MS to wait for notifications   |
++-------------------------------+------------------------------------------------+
+|sonhandler.cg                  | DMAAP Consumer group for subscription          |
++-------------------------------+------------------------------------------------+
+|sonhandler.cid                 | DMAAP Consumer id for subcription              |
++-------------------------------+------------------------------------------------+
+|sonhandler.configDbService     | Location of config DB (protocol, host & port)  |
++-------------------------------+------------------------------------------------+
+|sonhandler.oof.service         | Location of OOF (protocol, host & port)        |
++-------------------------------+------------------------------------------------+
+|sonhandler.optimizers          | Optimizer to trigger in OOF                    |
++-------------------------------+------------------------------------------------+
+|sonhandler.poorCountThreshold  | Threshold for number of times poorThreshold    |
+|                               | can be recorded for the cell                   |
++-------------------------------+------------------------------------------------+
+|sonhandler.badCountThreshold   | Threshold for number of times badThreshold can |
+|                               | be recorded for the cell                       |
++-------------------------------+------------------------------------------------+
+|sonhandler.                    | Timer for oof triggered count in minutes       |
+|oofTriggerCountTimer           |                                                |
++-------------------------------+------------------------------------------------+
+|sonhandler.policyRespTimer     | Timer to wait for notification from policy     |
++-------------------------------+------------------------------------------------+
+|sonhandler.                    | Maximum number of negative acknowledgements    |
+|policyNegativeAckThreshold     | from policy for a given cell                   |
++-------------------------------+------------------------------------------------+
+|sonhandler.                    | Time interval to trigger OOF with fixed pci    |
+|policyFixedPciTimeInterval     | cells                                          |
++-------------------------------+------------------------------------------------+
+|sonhandler.nfNamingCode        | Parameter to filter FM and PM notifications    |
+|                               | coming from ves                                |
++-------------------------------+------------------------------------------------+
diff --git a/docs/sections/services/tcagen2-docker/index.rst b/docs/sections/services/tcagen2-docker/index.rst
index 21da243..c5fc85d 100644
--- a/docs/sections/services/tcagen2-docker/index.rst
+++ b/docs/sections/services/tcagen2-docker/index.rst
@@ -16,6 +16,7 @@
    :maxdepth: 1
 
    ./installation
+   ./installation-helm.rst
    ./configuration
    ./functionality
    ./delivery
\ No newline at end of file
diff --git a/docs/sections/services/tcagen2-docker/installation-helm.rst b/docs/sections/services/tcagen2-docker/installation-helm.rst
new file mode 100644
index 0000000..e4a25d9
--- /dev/null
+++ b/docs/sections/services/tcagen2-docker/installation-helm.rst
@@ -0,0 +1,95 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. _tcagen2-installation-helm:
+
+
+Helm Installation
+=================
+
+The TCA-gen2 microservice can be deployed using helm charts in the oom repository.
+
+Deployment Pre-requisites
+~~~~~~~~~~~~~~~~~~~~~~~~~
+- DCAE and DMaaP pods should be up and running.
+- MongoDB should be up and running.
+
+Deployment steps
+~~~~~~~~~~~~~~~~
+
+- Default app config values can be updated in oom/kubernetes/dcaegen2-services/components/dcae-tcagen2/values.yaml.
+
+- Make the chart and deploy using the following command:
+
+  .. code-block:: bash
+
+    cd oom/kubernetes/
+    make dcaegen2-services
+    helm install dev-dcaegen2-services dcaegen2-services --namespace <namespace> --set global.masterPassword=<password>
+
+- To deploy only tcagen2:
+
+  .. code-block:: bash
+
+    helm install dev-dcae-tcagen2 dcaegen2-services/components/dcae-tcagen2 --namespace <namespace> --set global.masterPassword=<password>
+
+- To Uninstall
+
+  .. code-block:: bash
+
+    helm uninstall dev-dcae-tcagen2
+
+Application Configurations
+--------------------------
++-------------------------------+------------------------------------------------+
+|Configuration                  | Description                                    |
++===============================+================================================+
+|streams_subscribes             | Dmaap topics that the MS will consume messages |
++-------------------------------+------------------------------------------------+
+|streams_publishes              | Dmaap topics that the MS will publish messages |
++-------------------------------+------------------------------------------------+
+|streams_subscribes.            | Max polling Interval for consuming config data |
+|tca_handle_in.                 | from dmaap                                     |
+|polling.auto_adjusting.max     |                                                |
+|                               |                                                |
++-------------------------------+------------------------------------------------+
+|streams_subscribes.            | Min polling Interval for consuming config data |
+|tca_handle_in.                 | from dmaap                                     |
+|polling.auto_adjusting.min     |                                                |
+|                               |                                                |
++-------------------------------+------------------------------------------------+
+|streams_subscribes.            | Step down in polling Interval for consuming    |
+|tca_handle_in.                 | config data from dmaap                         |
+|polling.auto_adjusting.        |                                                |
+|step_down                      |                                                |
++-------------------------------+------------------------------------------------+
+|streams_subscribes.            | Step up polling Interval for consuming config  |
+|tca_handle_in.                 | data from dmaap                                |
+|polling.auto_adjusting.step_up |                                                |
++-------------------------------+------------------------------------------------+
+|spring.data.mongodb.uri        | MongoDB URI                                    |
++-------------------------------+------------------------------------------------+
+|tca.aai.generic_vnf_path       | AAI generic VNF path                           |
++-------------------------------+------------------------------------------------+
+|tca.aai.node_query_path        | AAI node query path                            |
++-------------------------------+------------------------------------------------+
+|tca.aai.password               | AAI password                                   |
++-------------------------------+------------------------------------------------+
+|tca.aai.url                    | AAI base URL                                   |
++-------------------------------+------------------------------------------------+
+|tca.aai.username               | AAI username                                   |
++-------------------------------+------------------------------------------------+
+|streams_subscribes.            | DMAAP Consumer group for subscription          |
+|tca_handle_in.consumer_group   |                                                |
++-------------------------------+------------------------------------------------+
+|streams_subscribes.            | DMAAP Consumer id for subscription             |
+|tca_handle_in.consumer_ids[0]  |                                                |
++-------------------------------+------------------------------------------------+
+|tca.policy                     | Policy details                                 |
++-------------------------------+------------------------------------------------+
+|tca.processing_batch_size      | Processing batch size                          |
++-------------------------------+------------------------------------------------+
+|tca.enable_abatement           | Enable abatement                               |
++-------------------------------+------------------------------------------------+
+|tca.enable_ecomp_logging       | Enable ecomp logging                           |
++-------------------------------+------------------------------------------------+
+