Merge "DG's to support SDNR RANSIM Netconf Notification"
diff --git a/platform-logic/oofpcipoc-api/src/main/json/oofpcipoc-api_handle-nbrlist-change-notif.json b/platform-logic/oofpcipoc-api/src/main/json/oofpcipoc-api_handle-nbrlist-change-notif.json
new file mode 100644
index 0000000..64a92f0
--- /dev/null
+++ b/platform-logic/oofpcipoc-api/src/main/json/oofpcipoc-api_handle-nbrlist-change-notif.json
@@ -0,0 +1,580 @@
+[
+    {
+        "id": "4516c711.3577f8",
+        "type": "method",
+        "name": "method",
+        "xml": "<method rpc='handle-nbrlist-change-notif' mode='sync'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 106,
+        "y": 175,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            [
+                "9fcef6.65d8a108"
+            ]
+        ]
+    },
+    {
+        "id": "93c36047.53405",
+        "type": "dgstart",
+        "name": "DGSTART",
+        "outputs": 1,
+        "x": 109,
+        "y": 24.999996185302734,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            [
+                "2d3470c1.2d733"
+            ]
+        ]
+    },
+    {
+        "id": "2d3470c1.2d733",
+        "type": "service-logic",
+        "name": "oofpcipoc-api ${project.version}",
+        "module": "oofpcipoc-api",
+        "version": "${project.version}",
+        "comments": "",
+        "xml": "<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='oofpcipoc-api' version='${project.version}'>",
+        "outputs": 1,
+        "x": 166.99998474121094,
+        "y": 86.00009155273438,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            [
+                "4516c711.3577f8"
+            ]
+        ]
+    },
+    {
+        "id": "9fcef6.65d8a108",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 128.48959732055664,
+        "y": 344.0000305175781,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            [
+                "9031fa86.08b668",
+                "49935087.66b48",
+                "2a374237.9dc55e",
+                "523cdfb2.ababa",
+                "29f0db5d.e621f4",
+                "593dbda3.561b94",
+                "ec5b41e1.3ed6e"
+            ]
+        ]
+    },
+    {
+        "id": "9031fa86.08b668",
+        "type": "returnSuccess",
+        "name": "return success",
+        "xml": "<return status='success'>\n<parameter name=\"ack-final-indicator\" value=\"Y\" />\n<parameter name=\"error-code\" value=\"200\" />\n<parameter name=\"error-message\" value=\"SUCCESSFUL Execution\" />\n",
+        "comments": "",
+        "x": 225.0002670288086,
+        "y": 574.0001831054688,
+        "z": "9baea81e.ce8a98",
+        "wires": []
+    },
+    {
+        "id": "9d47fa1e.0535e8",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/handle-nbrlist-change-notif.log\" />\n<parameter name=\"level\" value=\"info\" />\n<parameter name=\"field1\" value=\"Input RPC Payload request. FAP #:  \"/>\n<parameter name=\"field2\" value=\"`$idx`\"/>\n<parameter name=\"field3\" value=\"`$handle-nbrlist-change-notif-input.fap-service[$idx].alias`\"/>\n<parameter name=\"field4\" value=\"`$handle-nbrlist-change-notif-input.fap-service[$idx].cid`\"/>\n<parameter name=\"field5\" value=\"`$handle-nbrlist-change-notif-input.fap-service[$idx].phy-cell-id-in-use`\"/>\n<parameter name=\"field6\" value=\"`$handle-nbrlist-change-notif-input.fap-service[$idx].pnf-name`\"/>\n<parameter name=\"field7\" value=\"Number of neigbors Changed/To Be Added #:  \"/>\n<parameter name=\"field8\" value=\"`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-cell-number-of-entries`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 793.0005493164062,
+        "y": 41.00004577636719,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "db5169d7.5ce438",
+        "type": "comment",
+        "name": "handle-nbrlist-change-notif",
+        "info": "",
+        "comments": "",
+        "x": 352,
+        "y": 30.010412216186523,
+        "z": "9baea81e.ce8a98",
+        "wires": []
+    },
+    {
+        "id": "2a374237.9dc55e",
+        "type": "for",
+        "name": "for",
+        "xml": "<for index='idx' start='0' end=\"`$handle-nbrlist-change-notif-input.fap-service-number-of-entries-changed`\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 462.085693359375,
+        "y": 113.96358489990234,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            [
+                "14401c1b.9b0284"
+            ]
+        ]
+    },
+    {
+        "id": "49935087.66b48",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/handle-nbrlist-change-notif.log\" />\n<parameter name=\"level\" value=\"info\" />\n<parameter name=\"field1\" value=\"RPC to handle nbrlist change notification invoked. Number of FAP services for which neighbors have changed:  \"/>\n<parameter name=\"field2\" value=\"`$handle-nbrlist-change-notif-input.fap-service-number-of-entries-changed`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 278.0002975463867,
+        "y": 153.02084350585938,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "7faa2631.7c5a58",
+        "type": "set",
+        "name": "set tmp variables for notif input parms",
+        "xml": "<set>\n<parameter name=\"tmp.alias\" value=\"`$handle-nbrlist-change-notif-input.fap-service[$idx].alias`\"/>\n<parameter name=\"tmp.cid\" value=\"`$handle-nbrlist-change-notif-input.fap-service[$idx].cid`\"/>\n<parameter name=\"tmp.phy-cell-id-in-use\" value=\"`$handle-nbrlist-change-notif-input.fap-service[$idx].phy-cell-id-in-use`\"/>\n<parameter name=\"tmp.pnf-name\" value=\"`$handle-nbrlist-change-notif-input.fap-service[$idx].pnf-name`\"/>\n<parameter name=\"tmp.lte-cell-number-of-entries\" value=\"`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-cell-number-of-entries`\"/>",
+        "comments": "",
+        "x": 748.0010986328125,
+        "y": 208.89947509765625,
+        "z": "9baea81e.ce8a98",
+        "wires": []
+    },
+    {
+        "id": "523cdfb2.ababa",
+        "type": "execute",
+        "name": "execute Properties",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\n    <parameter name='fileName' value='%SDNC_CONFIG_DIR%/sdnr-oofpcipoc-api-dg.properties' />\n    <parameter name='contextPrefix' value='prop' />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 473.00018310546875,
+        "y": 174.0208282470703,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "29f0db5d.e621f4",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/handle-nbrlist-change-notif.log\" />\n<parameter name=\"level\" value=\"info\" />\n<parameter name=\"field1\" value=\"Properties read ..configDB URL\"/>\n<parameter name=\"field2\" value=\"`$prop.configdb.url`\"/>\n<parameter name=\"field3\" value=\"Properties read ..DMAAP Msg Router URL\"/>\n<parameter name=\"field4\" value=\"`$prop.configdb.url`\"/>\n<parameter name=\"field5\" value=\"`$prop.dmaap-message-router.url`\"/>\n<parameter name=\"field6\" value=\"`$prop.controller.pwd`\"/>\n<parameter name=\"field7\" value=\"`$prop.controller.url`\"/>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 438.00030517578125,
+        "y": 228.02090454101562,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "14401c1b.9b0284",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 614,
+        "y": 76,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            [
+                "9d47fa1e.0535e8",
+                "1c58f8bf.dba947"
+            ]
+        ]
+    },
+    {
+        "id": "1c58f8bf.dba947",
+        "type": "for",
+        "name": "for",
+        "xml": "<for index='idy' start='0' end=\"`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-cell-number-of-entries`\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 786,
+        "y": 106,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            [
+                "f16f8e26.83186"
+            ]
+        ]
+    },
+    {
+        "id": "f16f8e26.83186",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/handle-nbrlist-change-notif.log\" />\n<parameter name=\"level\" value=\"info\" />\n<parameter name=\"field1\" value=\"Neighbor #:  \"/>\n<parameter name=\"field2\" value=\"`$idy`\"/>\n<parameter name=\"field3\" value=\"`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].plmnid`\"/>\n<parameter name=\"field4\" value=\"`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].cid`\"/>\n<parameter name=\"field5\" value=\"`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].phy-cell-id`\"/>\n<parameter name=\"field6\" value=\"`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].pnf-name`\"/>\n<parameter name=\"field7\" value=\"`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].blacklisted`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 937,
+        "y": 100,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "593dbda3.561b94",
+        "type": "for",
+        "name": "for",
+        "xml": "<for index='idx' start='0' end=\"`$handle-nbrlist-change-notif-input.fap-service-number-of-entries-changed`\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 311,
+        "y": 353,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            [
+                "be3ed8bf.c5f9d8"
+            ]
+        ]
+    },
+    {
+        "id": "be3ed8bf.c5f9d8",
+        "type": "block",
+        "name": "block : ConfigDB Update",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 492,
+        "y": 345,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            [
+                "7faa2631.7c5a58",
+                "2df3d172.69f40e"
+            ]
+        ]
+    },
+    {
+        "id": "2df3d172.69f40e",
+        "type": "for",
+        "name": "for",
+        "xml": "<for index='idy' start='0' end=\"`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-cell-number-of-entries`\" >",
+        "comments": "",
+        "outputs": 1,
+        "x": 709,
+        "y": 319,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            [
+                "b03cb32a.dd65e"
+            ]
+        ]
+    },
+    {
+        "id": "83ef920c.2db7d",
+        "type": "set",
+        "name": "set tmp variables for notif neigbor input parms",
+        "xml": "<set>\n<parameter name=\"tmp.nbr.plmnid\" value=\"`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].plmnid`\"/>\n<parameter name=\"tmp.nbr.cid\" value=\"`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].cid`\"/>\n<parameter name=\"tmp.nbr.phy-cell-id\" value=\"`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].phy-cell-id`\"/>\n<parameter name=\"tmp.nbr.pnf-name\" value=\"`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].pnf-name`\"/>\n<parameter name=\"tmp.nbr.blacklisted\" value=\"`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].blacklisted`\"/>",
+        "comments": "",
+        "x": 1107,
+        "y": 193,
+        "z": "9baea81e.ce8a98",
+        "wires": []
+    },
+    {
+        "id": "b03cb32a.dd65e",
+        "type": "block",
+        "name": "block : atomic",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 842,
+        "y": 267,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            [
+                "83ef920c.2db7d",
+                "94362525.ddff98",
+                "b52b841c.250db8",
+                "8ef1f19b.70c28"
+            ]
+        ]
+    },
+    {
+        "id": "94362525.ddff98",
+        "type": "execute",
+        "name": "generate configdb add URL for nbr",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >\n    <parameter name=\"source\" value=\"`$prop.restapi.configdb.add-nbrlist-change-per-notif`\"/>\n    <parameter name=\"outputPath\" value=\"tmp.configdb.add-nbrlist-change-per-notif.url\"/>\n    <parameter name=\"target\" value=\"{cellId}\"/>\n    <parameter name=\"replacement\" value=\"`$tmp.cid`\"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1105,
+        "y": 239,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "b52b841c.250db8",
+        "type": "record",
+        "name": "record configdb RestAPI parms",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/handle-nbrlist-change-notif.log\" />\n<parameter name=\"level\" value=\"info\" />\n<parameter name=\"field1\" value=\"URL for configDB neighbor cell ADD\"/>\n<parameter name='field2' value=\"`$prop.configdb.url + $tmp.configdb.add-nbrlist-change-per-notif.url`\" />\n<parameter name='field3' value=\"`$tmp.nbr.cid`\" />\n<parameter name='field4' value=\"`$tmp.nbr.blacklisted`\" />\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1100,
+        "y": 288,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "8ef1f19b.70c28",
+        "type": "execute",
+        "name": "Add neighbor to Cell",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/oofpcipoc-add-nbr-to-configdb-per-nbrlist-change-notif.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.configdb.url + $tmp.configdb.add-nbrlist-change-per-notif.url`\"/>\n<parameter name=\"httpMethod\" value=\"PUT\"/>\n<parameter name=\"responsePrefix\" value=\"oofpci-configdb-response\"/>\n<parameter name='contentType' value='application/json' /> \n<parameter name='format' value='json' />\n<parameter name='accept' value='application/json' />",
+        "comments": "",
+        "outputs": 1,
+        "x": 1071,
+        "y": 366,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            [
+                "3994f34f.8e13fc",
+                "b6596c18.0f6a8"
+            ]
+        ]
+    },
+    {
+        "id": "3994f34f.8e13fc",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1273,
+        "y": 333,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            [
+                "7eb76e31.a0512"
+            ]
+        ]
+    },
+    {
+        "id": "b6596c18.0f6a8",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 1265.999891281128,
+        "y": 411.99990940093994,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            [
+                "14e02b1e.c62315"
+            ]
+        ]
+    },
+    {
+        "id": "7eb76e31.a0512",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1433.9998779296875,
+        "y": 290.0000305175781,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            [
+                "72b6d90.f14b728"
+            ]
+        ]
+    },
+    {
+        "id": "72b6d90.f14b728",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"Error adding neighbor to configdb. Aborting notification handler\" />",
+        "comments": "",
+        "x": 1612.999568939209,
+        "y": 286.99999809265137,
+        "z": "9baea81e.ce8a98",
+        "wires": []
+    },
+    {
+        "id": "14e02b1e.c62315",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1423.9996337890625,
+        "y": 377.9999694824219,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            [
+                "cebe84be.1a3318"
+            ]
+        ]
+    },
+    {
+        "id": "cebe84be.1a3318",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/configuration-phy-cell-id.log\" />\n<parameter name=\"level\" value=\"info\" />\n<parameter name=\"field1\" value=\"Neighbor Added to ConfigDB \"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1602.9997024536133,
+        "y": 376.99995613098145,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            []
+        ]
+    },
+    {
+        "id": "ec5b41e1.3ed6e",
+        "type": "block",
+        "name": "block : Publish DMAAP Message",
+        "xml": "<block atomic='true'>",
+        "atomic": "true",
+        "comments": "",
+        "outputs": 1,
+        "x": 413,
+        "y": 436,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            [
+                "e91dd48a.05eb08",
+                "3fb77eff.422562"
+            ]
+        ]
+    },
+    {
+        "id": "3fb77eff.422562",
+        "type": "execute",
+        "name": "execute DmaapMsg",
+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n    <parameter name='templateFileName' value=\"`$prop.restapi.templateDir + '/' + $prop.restapi.dmaap-publish.templatefile`\" />\n    <parameter name='restapiUrl' value=\"`$prop.dmaap-message-router.url + '/' + $prop.oofpcipoc-dmaap.nbrlist-change.topic`\" />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='POST' />\n    <parameter name='contentType' value='application/json' />\n    <parameter name='responsePrefix' value='dmaap' />",
+        "comments": "",
+        "outputs": 1,
+        "x": 643.5,
+        "y": 504.08331298828125,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            [
+                "35a9b31.3a83c4c",
+                "8b2365df.8d4838"
+            ]
+        ]
+    },
+    {
+        "id": "e91dd48a.05eb08",
+        "type": "set",
+        "name": "set",
+        "xml": "<set>\n<parameter name='tmp.oofpcipoc-dmaap.requestID' value='`$prop.oofpcipoc-dmaap.requestID`'/>\n<parameter name='tmp.oofpcipoc-dmaap.aai' value=\"`$prop.oofpcipoc-dmaap.aai`\"/>\n<parameter name='tmp.oofpcipoc-dmaap.version' value='`$prop.oofpcipoc-dmaap.version`'/>\n<parameter name='tmp.oofpcipoc-dmaap.action' value='`$prop.oofpcipoc-dmaap.action`'/>\n<parameter name='tmp.oofpcipoc-dmaap.payload' value='`$handle-nbrlist-change-notif-input.payload`'/>",
+        "comments": "",
+        "x": 638.166748046875,
+        "y": 410.08331298828125,
+        "z": "9baea81e.ce8a98",
+        "wires": []
+    },
+    {
+        "id": "35a9b31.3a83c4c",
+        "type": "failure",
+        "name": "failure",
+        "xml": "<outcome value='failure'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 839,
+        "y": 444,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            [
+                "61201a29.a16fd4"
+            ]
+        ]
+    },
+    {
+        "id": "8b2365df.8d4838",
+        "type": "success",
+        "name": "success",
+        "xml": "<outcome value='success'>\n",
+        "comments": "",
+        "outputs": 1,
+        "x": 824.9998779296875,
+        "y": 577.9999389648438,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            [
+                "72b300f.e04af"
+            ]
+        ]
+    },
+    {
+        "id": "61201a29.a16fd4",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1029.9998779296875,
+        "y": 474.0000305175781,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            [
+                "8fed2904.c2cde8"
+            ]
+        ]
+    },
+    {
+        "id": "8fed2904.c2cde8",
+        "type": "returnFailure",
+        "name": "return failure",
+        "xml": "<return status='failure'>\n<parameter name='ack-final' value='Y'/>\n<parameter name=\"error-code\" value=\"500\" />\n<parameter name=\"error-message\" value=\"Error publishing DMAAP message. ConfigDB Updated; TO be rolled back...will handle next release\" />",
+        "comments": "",
+        "x": 1208.999568939209,
+        "y": 470.99999809265137,
+        "z": "9baea81e.ce8a98",
+        "wires": []
+    },
+    {
+        "id": "72b300f.e04af",
+        "type": "block",
+        "name": "block",
+        "xml": "<block>\n",
+        "atomic": "false",
+        "comments": "",
+        "outputs": 1,
+        "x": 1019.9996337890625,
+        "y": 561.9999694824219,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            [
+                "6bff7ffa.3f521"
+            ]
+        ]
+    },
+    {
+        "id": "6bff7ffa.3f521",
+        "type": "record",
+        "name": "record",
+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/configuration-phy-cell-id.log\" />\n<parameter name=\"level\" value=\"info\" />\n<parameter name=\"field1\" value=\"DMAAP Message Successfully Published \"/>",
+        "comments": "",
+        "outputs": 1,
+        "x": 1198.9997024536133,
+        "y": 560.9999561309814,
+        "z": "9baea81e.ce8a98",
+        "wires": [
+            []
+        ]
+    }
+]
\ No newline at end of file
diff --git a/platform-logic/oofpcipoc-api/src/main/xml/oofpcipoc-api_handle-nbrlist-change-notif.xml b/platform-logic/oofpcipoc-api/src/main/xml/oofpcipoc-api_handle-nbrlist-change-notif.xml
new file mode 100644
index 0000000..dca5ce4
--- /dev/null
+++ b/platform-logic/oofpcipoc-api/src/main/xml/oofpcipoc-api_handle-nbrlist-change-notif.xml
@@ -0,0 +1,161 @@
+<service-logic
+    xmlns='http://www.onap.org/sdnc/svclogic'
+    xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='oofpcipoc-api' version='${project.version}'>
+    <method rpc='handle-nbrlist-change-notif' mode='sync'>
+        <block atomic='true'>
+            <for index='idx' start='0' end="`$handle-nbrlist-change-notif-input.fap-service-number-of-entries-changed`" >
+                <block atomic='true'>
+                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+                        <parameter name="file" value="/opt/opendaylight/current/data/log/handle-nbrlist-change-notif.log" />
+                        <parameter name="level" value="info" />
+                        <parameter name="field1" value="Input RPC Payload request. FAP #:  "/>
+                        <parameter name="field2" value="`$idx`"/>
+                        <parameter name="field3" value="`$handle-nbrlist-change-notif-input.fap-service[$idx].alias`"/>
+                        <parameter name="field4" value="`$handle-nbrlist-change-notif-input.fap-service[$idx].cid`"/>
+                        <parameter name="field5" value="`$handle-nbrlist-change-notif-input.fap-service[$idx].phy-cell-id-in-use`"/>
+                        <parameter name="field6" value="`$handle-nbrlist-change-notif-input.fap-service[$idx].pnf-name`"/>
+                        <parameter name="field7" value="Number of neigbors Changed/To Be Added #:  "/>
+                        <parameter name="field8" value="`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-cell-number-of-entries`"/>
+                    </record>
+                    <for index='idy' start='0' end="`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-cell-number-of-entries`" >
+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+                            <parameter name="file" value="/opt/opendaylight/current/data/log/handle-nbrlist-change-notif.log" />
+                            <parameter name="level" value="info" />
+                            <parameter name="field1" value="Neighbor #:  "/>
+                            <parameter name="field2" value="`$idy`"/>
+                            <parameter name="field3" value="`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].plmnid`"/>
+                            <parameter name="field4" value="`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].cid`"/>
+                            <parameter name="field5" value="`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].phy-cell-id`"/>
+                            <parameter name="field6" value="`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].pnf-name`"/>
+                            <parameter name="field7" value="`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].blacklisted`"/>
+                        </record>
+                    </for>
+                </block>
+            </for>
+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+                <parameter name="file" value="/opt/opendaylight/current/data/log/handle-nbrlist-change-notif.log" />
+                <parameter name="level" value="info" />
+                <parameter name="field1" value="RPC to handle nbrlist change notification invoked. Number of FAP services for which neighbors have changed:  "/>
+                <parameter name="field2" value="`$handle-nbrlist-change-notif-input.fap-service-number-of-entries-changed`"/>
+            </record>
+            <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
+                <parameter name='fileName' value='%SDNC_CONFIG_DIR%/sdnr-oofpcipoc-api-dg.properties' />
+                <parameter name='contextPrefix' value='prop' />
+            </execute>
+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+                <parameter name="file" value="/opt/opendaylight/current/data/log/handle-nbrlist-change-notif.log" />
+                <parameter name="level" value="info" />
+                <parameter name="field1" value="Properties read ..configDB URL"/>
+                <parameter name="field2" value="`$prop.configdb.url`"/>
+                <parameter name="field3" value="Properties read ..DMAAP Msg Router URL"/>
+                <parameter name="field4" value="`$prop.configdb.url`"/>
+                <parameter name="field5" value="`$prop.dmaap-message-router.url`"/>
+                <parameter name="field6" value="`$prop.controller.pwd`"/>
+                <parameter name="field7" value="`$prop.controller.url`"/>
+            </record>
+            <for index='idx' start='0' end="`$handle-nbrlist-change-notif-input.fap-service-number-of-entries-changed`" >
+                <block atomic='true'>
+                    <set>
+                        <parameter name="tmp.alias" value="`$handle-nbrlist-change-notif-input.fap-service[$idx].alias`"/>
+                        <parameter name="tmp.cid" value="`$handle-nbrlist-change-notif-input.fap-service[$idx].cid`"/>
+                        <parameter name="tmp.phy-cell-id-in-use" value="`$handle-nbrlist-change-notif-input.fap-service[$idx].phy-cell-id-in-use`"/>
+                        <parameter name="tmp.pnf-name" value="`$handle-nbrlist-change-notif-input.fap-service[$idx].pnf-name`"/>
+                        <parameter name="tmp.lte-cell-number-of-entries" value="`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-cell-number-of-entries`"/>
+                    </set>
+                    <for index='idy' start='0' end="`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-cell-number-of-entries`" >
+                        <block atomic='true'>
+                            <set>
+                                <parameter name="tmp.nbr.plmnid" value="`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].plmnid`"/>
+                                <parameter name="tmp.nbr.cid" value="`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].cid`"/>
+                                <parameter name="tmp.nbr.phy-cell-id" value="`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].phy-cell-id`"/>
+                                <parameter name="tmp.nbr.pnf-name" value="`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].pnf-name`"/>
+                                <parameter name="tmp.nbr.blacklisted" value="`$handle-nbrlist-change-notif-input.fap-service[$idx].lte-ran-neighbor-list-in-use-lte-cell-changed[$idy].blacklisted`"/>
+                            </set>
+                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='replace' >
+                                <parameter name="source" value="`$prop.restapi.configdb.add-nbrlist-change-per-notif`"/>
+                                <parameter name="outputPath" value="tmp.configdb.add-nbrlist-change-per-notif.url"/>
+                                <parameter name="target" value="{cellId}"/>
+                                <parameter name="replacement" value="`$tmp.cid`"/>
+                            </execute>
+                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+                                <parameter name="file" value="/opt/opendaylight/current/data/log/handle-nbrlist-change-notif.log" />
+                                <parameter name="level" value="info" />
+                                <parameter name="field1" value="URL for configDB neighbor cell ADD"/>
+                                <parameter name='field2' value="`$prop.configdb.url + $tmp.configdb.add-nbrlist-change-per-notif.url`" />
+                                <parameter name='field3' value="`$tmp.nbr.cid`" />
+                                <parameter name='field4' value="`$tmp.nbr.blacklisted`" />
+                            </record>
+                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/oofpcipoc-add-nbr-to-configdb-per-nbrlist-change-notif.json'`" />
+                                <parameter name="restapiUrl" value="`$prop.configdb.url + $tmp.configdb.add-nbrlist-change-per-notif.url`"/>
+                                <parameter name="httpMethod" value="PUT"/>
+                                <parameter name="responsePrefix" value="oofpci-configdb-response"/>
+                                <parameter name='contentType' value='application/json' />
+                                <parameter name='format' value='json' />
+                                <parameter name='accept' value='application/json' />
+                                <outcome value='failure'>
+                                    <block>
+                                        <return status='failure'>
+                                            <parameter name='ack-final' value='Y'/>
+                                            <parameter name="error-code" value="500" />
+                                            <parameter name="error-message" value="Error adding neighbor to configdb. Aborting notification handler" />
+                                        </return>
+                                    </block>
+                                </outcome>
+                                <outcome value='success'>
+                                    <block>
+                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+                                            <parameter name="file" value="/opt/opendaylight/current/data/log/configuration-phy-cell-id.log" />
+                                            <parameter name="level" value="info" />
+                                            <parameter name="field1" value="Neighbor Added to ConfigDB "/>
+                                        </record>
+                                    </block>
+                                </outcome>
+                            </execute>
+                        </block>
+                    </for>
+                </block>
+            </for>
+            <block atomic='true'>
+                <set>
+                    <parameter name='tmp.oofpcipoc-dmaap.requestID' value='`$prop.oofpcipoc-dmaap.requestID`'/>
+                    <parameter name='tmp.oofpcipoc-dmaap.aai' value="`$prop.oofpcipoc-dmaap.aai`"/>
+                    <parameter name='tmp.oofpcipoc-dmaap.version' value='`$prop.oofpcipoc-dmaap.version`'/>
+                    <parameter name='tmp.oofpcipoc-dmaap.action' value='`$prop.oofpcipoc-dmaap.action`'/>
+                    <parameter name='tmp.oofpcipoc-dmaap.payload' value='`$handle-nbrlist-change-notif-input.payload`'/>
+                </set>
+                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
+                    <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.dmaap-publish.templatefile`" />
+                    <parameter name='restapiUrl' value="`$prop.dmaap-message-router.url + '/' + $prop.oofpcipoc-dmaap.nbrlist-change.topic`" />
+                    <parameter name='format' value='json' />
+                    <parameter name='httpMethod' value='POST' />
+                    <parameter name='contentType' value='application/json' />
+                    <parameter name='responsePrefix' value='dmaap' />
+                    <outcome value='failure'>
+                        <block>
+                            <return status='failure'>
+                                <parameter name='ack-final' value='Y'/>
+                                <parameter name="error-code" value="500" />
+                                <parameter name="error-message" value="Error publishing DMAAP message. ConfigDB Updated; TO be rolled back...will handle next release" />
+                            </return>
+                        </block>
+                    </outcome>
+                    <outcome value='success'>
+                        <block>
+                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+                                <parameter name="file" value="/opt/opendaylight/current/data/log/configuration-phy-cell-id.log" />
+                                <parameter name="level" value="info" />
+                                <parameter name="field1" value="DMAAP Message Successfully Published "/>
+                            </record>
+                        </block>
+                    </outcome>
+                </execute>
+            </block>
+            <return status='success'>
+                <parameter name="ack-final-indicator" value="Y" />
+                <parameter name="error-code" value="200" />
+                <parameter name="error-message" value="SUCCESSFUL Execution" />
+            </return>
+        </block>
+    </method>
+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/restapi-templates/src/main/json/oofpcipoc-add-nbr-to-configdb-per-nbrlist-change-notif.json b/platform-logic/restapi-templates/src/main/json/oofpcipoc-add-nbr-to-configdb-per-nbrlist-change-notif.json
new file mode 100644
index 0000000..5751e15
--- /dev/null
+++ b/platform-logic/restapi-templates/src/main/json/oofpcipoc-add-nbr-to-configdb-per-nbrlist-change-notif.json
@@ -0,0 +1,4 @@
+{
+  "targetCellId": ${tmp.nbr.cid},
+  "ho": ${tmp.nbr.blacklisted}
+}
diff --git a/platform-logic/restapi-templates/src/main/json/oofpcipoc-dmaap-publish-template.json b/platform-logic/restapi-templates/src/main/json/oofpcipoc-dmaap-publish-template.json
new file mode 100644
index 0000000..d488f27
--- /dev/null
+++ b/platform-logic/restapi-templates/src/main/json/oofpcipoc-dmaap-publish-template.json
@@ -0,0 +1,8 @@
+{
+    "requestID": ${tmp.oofpcipoc-dmaap.requestID},
+    "AAI": ${tmp.oofpcipoc-dmaap.aai},
+    "from": "SDNR",
+    "version": ${tmp.oofpcipoc-dmaap.version},
+    "Action": ${tmp.oofpcipoc-dmaap.action},
+    "Payload": ${tmp.oofpcipoc-dmaap.payload}
+}