Merge "Provide SDNR for SDNC"

Former-commit-id: b89a391dd2741b77f8afa2fcc32865600de7923d
diff --git a/installation/ansible-server/src/main/Playbooks/ansible_huawei_rollback@0.00.yml b/installation/ansible-server/src/main/Playbooks/ansible_huawei_rollback@0.00.yml
new file mode 100644
index 0000000..ef56c54
--- /dev/null
+++ b/installation/ansible-server/src/main/Playbooks/ansible_huawei_rollback@0.00.yml
@@ -0,0 +1,21 @@
+---

+- hosts: all

+  tasks:

+  - name: create a temporary file for additional data

+    file: 

+        path: /tmp/tmp-{{Id}}

+        state: touch

+    become: false

+

+  - name: prepare additional data

+    shell: echo {{additionalData}} > /tmp/tmp-{{Id}}

+    become: false

+

+  - name: execute rollback operation

+    shell: ./swm/rollback.sh {{pnfId}} {{oldSwVersion}} /tmp/tmp-{{Id}}

+

+  - name: remove the temporary file

+    file:

+        path: /tmp/tmp-{{Id}}

+        state: absent

+    become: false

diff --git a/installation/src/main/properties/lcm-dg.properties b/installation/src/main/properties/lcm-dg.properties
index 3c6920e..53cecfb 100644
--- a/installation/src/main/properties/lcm-dg.properties
+++ b/installation/src/main/properties/lcm-dg.properties
@@ -9,9 +9,11 @@
 lcm.upgrade-pre-check.playbookname=ansible_precheck
 lcm.upgrade-post-check.playbookname=ansible_postcheck
 lcm.upgrade-software.playbookname=ansible_upgradesw
+lcm.rollback.playbookname=ansible_rollback
 lcm.pnf.upgrade-pre-check.playbookname=ansible_precheck_pnf
 lcm.pnf.upgrade-post-check.playbookname=ansible_postcheck_pnf
 lcm.pnf.upgrade-software.playbookname=ansible_upgradesw_pnf
+lcm.pnf.rollback.playbookname=ansible_rollback_pnf
 lcm.quiesce-traffic.playbookname=ansible_quiescetraffic
 lcm.resume-traffic.playbookname=ansible_resumetraffic
 lcm.distribute-traffic.playbookname=ansible_distributetraffic
diff --git a/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-aai-pnf-put.json b/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-aai-pnf-put.json
new file mode 100644
index 0000000..40b49cf
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/GENERIC-RESOURCE-API_self-serve-aai-pnf-put.json
@@ -0,0 +1,675 @@
+[

+    {

+        "id": "89a5f171.637f3",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 102.85714721679688,

+        "y": 27.142858505249023,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "726d4b48.6b3284"

+            ]

+        ]

+    },

+    {

+        "id": "ba98d97d.0b8a38",

+        "type": "method",

+        "name": "method self-serve-aai-pnf-put",

+        "xml": "<method rpc='self-serve-aai-pnf-put' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 207.92857360839844,

+        "y": 108.31746292114258,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "f00b1d79.cbbfd"

+            ]

+        ]

+    },

+    {

+        "id": "f00b1d79.cbbfd",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 193.75001525878906,

+        "y": 174.80955505371094,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "8e501ff3.989f9",

+                "f0ca58a.1b0cda8",

+                "ced3a890.5dcf98",

+                "fad2d25.74e043"

+            ]

+        ]

+    },

+    {

+        "id": "726d4b48.6b3284",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 375.71429443359375,

+        "y": 26.571425437927246,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "ba98d97d.0b8a38"

+            ]

+        ]

+    },

+    {

+        "id": "8e501ff3.989f9",

+        "type": "switchNode",

+        "name": "switch: ss.capability-action",

+        "xml": "<switch test='`$ss.capability-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 459.6429328918457,

+        "y": 228.74998331069946,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "11cee7f1.2e1cd8",

+                "107d90ac.e448ef"

+            ]

+        ]

+    },

+    {

+        "id": "11cee7f1.2e1cd8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 683.1429290771484,

+        "y": 228.99998331069946,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "c5d83975.009c18"

+            ]

+        ]

+    },

+    {

+        "id": "c5d83975.009c18",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status=\"failure\">\n\t<parameter name=\"ack-final\" value=\"Y\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"ss.capability-action is null\" />\n",

+        "comments": "",

+        "x": 843.0596008300781,

+        "y": 229.11108207702637,

+        "z": "de6615d.b5910e8",

+        "wires": []

+    },

+    {

+        "id": "107d90ac.e448ef",

+        "type": "outcome",

+        "name": "assign",

+        "xml": "<outcome value='assign'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 682.8929252624512,

+        "y": 277.99998664855957,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "122bdfd4.0eeb4"

+            ]

+        ]

+    },

+    {

+        "id": "575e2623.493218",

+        "type": "for",

+        "name": "for aidx in param_length (PNF)",

+        "xml": "<for silentFailure='true' index=\"aidx\" start=\"0\" end=\"`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 1122.884937286377,

+        "y": 277.9603753089905,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "95379e3b.20688"

+            ]

+        ]

+    },

+    {

+        "id": "f0ca58a.1b0cda8",

+        "type": "execute",

+        "name": "printContext",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >\n<parameter name='filename' value='/var/tmp/ss-aai-pnf-put.log' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 404.702392578125,

+        "y": 593.0952491760254,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "95379e3b.20688",

+        "type": "switchNode",

+        "name": "switch: param[].name",

+        "xml": "<switch test='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1445.4286041259766,

+        "y": 278.21428871154785,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "bf35662a.fd7a28",

+                "a34f4b03.d69878",

+                "2c5c4f3f.a39d2",

+                "cba4e46a.a153b8",

+                "8d9b71bd.4a778",

+                "3935817d.ee66ee"

+            ]

+        ]

+    },

+    {

+        "id": "bf35662a.fd7a28",

+        "type": "outcome",

+        "name": "pnf-name",

+        "xml": "<outcome value='pnf-name'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1676.3215980529785,

+        "y": 277.9999809265137,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "57231303.ea37dc"

+            ]

+        ]

+    },

+    {

+        "id": "a34f4b03.d69878",

+        "type": "outcome",

+        "name": "pnf-id",

+        "xml": "<outcome value='pnf-id'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1667.6788024902344,

+        "y": 386.9642949104309,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "f63b6a7a.ac9fd8"

+            ]

+        ]

+    },

+    {

+        "id": "57231303.ea37dc",

+        "type": "set",

+        "name": "set pnf-name, index",

+        "xml": "<set>\n<parameter name='ss.param.pnf-name' value ='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />\n<parameter name='ss.param.pnf-name-index' value='`$aidx`' />",

+        "comments": "",

+        "x": 1879.321605682373,

+        "y": 278.4999966621399,

+        "z": "de6615d.b5910e8",

+        "wires": []

+    },

+    {

+        "id": "f63b6a7a.ac9fd8",

+        "type": "set",

+        "name": "set pnf-id, index",

+        "xml": "<set>\n<parameter name='ss.param.pnf-id' value ='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />\n<parameter name='ss.param.pnf-id-index' value='`$aidx`' />",

+        "comments": "",

+        "x": 1843.1788139343262,

+        "y": 386.7142958641052,

+        "z": "de6615d.b5910e8",

+        "wires": []

+    },

+    {

+        "id": "7b5b542e.56480c",

+        "type": "save",

+        "name": "update pnf",

+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"pnf\"\n\t\tkey=\"pnf.pnf-name = $ss.param.pnf-name \" >\n<parameter name=\"pnf-name2\" value=\"`$ss.param.pnf-name2`\" />\n<parameter name=\"prov-status\" value=\"PREPROV\" />\n<parameter name=\"selflink\" value=\"`$ss.selflink`\" />\n<parameter name=\"ipaddress-v4-oam\" value=\"`$ss.param.ipv4-oam-address`\" />\n<parameter name=\"ipaddress-v6-oam\" value=\"`$ss.param.ipv6-oam-address`\" />\n<parameter name=\"model-customization-id\"\n        value=\"`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.onap-model-information.model-customization-uuid`\" />\n<parameter name=\"model-invariant-id\"\n        value=\"`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.onap-model-information.model-invariant-uuid`\" />\n<parameter name=\"model-version-id\"\n        value=\"`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.onap-model-information.model-uuid`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1060.7498931884766,

+        "y": 897.3929443359375,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "f112cd3.4ede93",

+                "84b6dbe8.3fe148"

+            ]

+        ]

+    },

+    {

+        "id": "f112cd3.4ede93",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1260.9999237060547,

+        "y": 897.7499914169312,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "28f613dd.534a9c"

+            ]

+        ]

+    },

+    {

+        "id": "84b6dbe8.3fe148",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1267.2499351501465,

+        "y": 949.5000257492065,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "26471432.bb892c"

+            ]

+        ]

+    },

+    {

+        "id": "dff94b2c.d48618",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Failed to update pnf.pnf-name in AnAI with pnf-name=' + $ss.param.pnf-name`\" />\n",

+        "comments": "",

+        "x": 1654.5830841064453,

+        "y": 897.5357427597046,

+        "z": "de6615d.b5910e8",

+        "wires": []

+    },

+    {

+        "id": "43d277af.fa5098",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'pnf with pnf-name =' + $ss.param.pnf-name + ' is not found in AAI'`\" />\n",

+        "comments": "",

+        "x": 1653.7260665893555,

+        "y": 948.7738838195801,

+        "z": "de6615d.b5910e8",

+        "wires": []

+    },

+    {

+        "id": "9bdf4d2.171ffb",

+        "type": "save",

+        "name": "get pnf",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\"\n\tresource=\"pnf\"\n\t\tkey=\"pnf.pnf-name = $ss.param.pnf-name \"\n\tpfx=\"tmp.aai.pnf\" >\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1042.03564453125,

+        "y": 638.0000247955322,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "1bebe350.ee380d",

+                "ab2a6854.6c93e8"

+            ]

+        ]

+    },

+    {

+        "id": "1bebe350.ee380d",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1250.5712776184082,

+        "y": 637.499945640564,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "4ad9bcb5.06d024"

+            ]

+        ]

+    },

+    {

+        "id": "ab2a6854.6c93e8",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1258.8211975097656,

+        "y": 736.3928537368774,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "363ef080.c1121"

+            ]

+        ]

+    },

+    {

+        "id": "dd0d7e04.e3135",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'Encountered error to get pnf with pnf-name=' + $ss.param.pnf-name + ' from AnAI'`\" />\n",

+        "comments": "",

+        "x": 1676.4400024414062,

+        "y": 685.8571395874023,

+        "z": "de6615d.b5910e8",

+        "wires": []

+    },

+    {

+        "id": "aaf8ef15.0a2c9",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='500' />\n<parameter name='error-message' value=\"`'pnf with pnf-name=' + $ss.param.pnf-name + ' not found in AAI'`\" />\n",

+        "comments": "",

+        "x": 1678.1544570922852,

+        "y": 736.0953845977783,

+        "z": "de6615d.b5910e8",

+        "wires": []

+    },

+    {

+        "id": "122bdfd4.0eeb4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 840.6429214477539,

+        "y": 278.2499828338623,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "575e2623.493218",

+                "9bdf4d2.171ffb",

+                "7b5b542e.56480c",

+                "1331d99f.8d7da6",

+                "45a19896.9c1308"

+            ]

+        ]

+    },

+    {

+        "id": "4ad9bcb5.06d024",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1422.142864227295,

+        "y": 637.5357389450073,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "9a1993dc.ff74",

+                "dd0d7e04.e3135"

+            ]

+        ]

+    },

+    {

+        "id": "28f613dd.534a9c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1434.4284896850586,

+        "y": 897.8215160369873,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "9a1993dc.ff74",

+                "dff94b2c.d48618"

+            ]

+        ]

+    },

+    {

+        "id": "26471432.bb892c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1437.2857055664062,

+        "y": 948.6786575317383,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "9a1993dc.ff74",

+                "43d277af.fa5098"

+            ]

+        ]

+    },

+    {

+        "id": "363ef080.c1121",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1424.999942779541,

+        "y": 736.5357389450073,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "9a1993dc.ff74",

+                "aaf8ef15.0a2c9"

+            ]

+        ]

+    },

+    {

+        "id": "9a1993dc.ff74",

+        "type": "set",

+        "name": "set resource-resolution-data.status = FAILED",

+        "xml": "<set>\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$ss.param.aai-pnf-put-index].resource-resolution-data.status' \n\tvalue='FAILED' />\n",

+        "comments": "",

+        "x": 1785.9999465942383,

+        "y": 637.392951965332,

+        "z": "de6615d.b5910e8",

+        "wires": []

+    },

+    {

+        "id": "6b74947.f0ea76c",

+        "type": "comment",

+        "name": "PNF params",

+        "info": "",

+        "comments": "",

+        "x": 1096.9286308288574,

+        "y": 228.33332681655884,

+        "z": "de6615d.b5910e8",

+        "wires": []

+    },

+    {

+        "id": "1331d99f.8d7da6",

+        "type": "set",

+        "name": "set resource-resolution-data.status = SUCCESS",

+        "xml": "<set>\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$ss.param.aai-pnf-put-index].resource-resolution-data.status' \n\tvalue='SUCCESS' />\n",

+        "comments": "",

+        "x": 1187.9882431030273,

+        "y": 1092.6783409118652,

+        "z": "de6615d.b5910e8",

+        "wires": []

+    },

+    {

+        "id": "2c5c4f3f.a39d2",

+        "type": "outcome",

+        "name": "aai-pnf-put",

+        "xml": "<outcome value='aai-pnf-put'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1679.8215141296387,

+        "y": 446.2499794960022,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "b874d734.628b78"

+            ]

+        ]

+    },

+    {

+        "id": "b874d734.628b78",

+        "type": "set",

+        "name": "set ss.param.aai-pnf-put-index",

+        "xml": "<set>\n<parameter name='ss.param.aai-pnf-put-index' value='`$aidx`' />",

+        "comments": "",

+        "x": 1913.3215255737305,

+        "y": 445.9999804496765,

+        "z": "de6615d.b5910e8",

+        "wires": []

+    },

+    {

+        "id": "ced3a890.5dcf98",

+        "type": "switchNode",

+        "name": "switch: ss.capability-name",

+        "xml": "<switch test='`$ss.capability-name`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 458.0357475280762,

+        "y": 174.46428155899048,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "4ddefe6.88848"

+            ]

+        ]

+    },

+    {

+        "id": "4ddefe6.88848",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "outputs": 1,

+        "x": 683.0357704162598,

+        "y": 174.964280128479,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "a5814d23.17c89"

+            ]

+        ]

+    },

+    {

+        "id": "a5814d23.17c89",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status=\"failure\">\n\t<parameter name=\"ack-final\" value=\"Y\" />\n\t<parameter name=\"error-code\" value=\"500\"/>\n\t<parameter name=\"error-message\" value=\"ss.capability-name is null\" />\n",

+        "comments": "",

+        "x": 842.9524421691895,

+        "y": 175.0753788948059,

+        "z": "de6615d.b5910e8",

+        "wires": []

+    },

+    {

+        "id": "fad2d25.74e043",

+        "type": "set",

+        "name": "set param[$ss.param.aai-pnf-put-index].value = SUCCESS",

+        "xml": "<set>\n<parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$ss.param.aai-pnf-put-index].value' \n\tvalue='SUCCESS' />\n",

+        "comments": "",

+        "x": 567.0357360839844,

+        "y": 418.74999713897705,

+        "z": "de6615d.b5910e8",

+        "wires": []

+    },

+    {

+        "id": "45a19896.9c1308",

+        "type": "set",

+        "name": "set ss.selflink",

+        "xml": "<set>\n<parameter name=\"ss.selflink\" \n\tvalue=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/' + \n\t$service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.service-instance-id + \n\t'/service-data/pnfs/pnf/' + \n\t$ss.param.pnf-id + \n\t'/pnf-data/pnf-topology/'`\" />\n",

+        "comments": "",

+        "x": 1065.9999618530273,

+        "y": 808.5714473724365,

+        "z": "de6615d.b5910e8",

+        "wires": []

+    },

+    {

+        "id": "cba4e46a.a153b8",

+        "type": "outcome",

+        "name": "pnf-name2",

+        "xml": "<outcome value='pnf-name2'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1682.5715141296387,

+        "y": 331.42857694625854,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "3b829d40.830272"

+            ]

+        ]

+    },

+    {

+        "id": "3b829d40.830272",

+        "type": "set",

+        "name": "set pnf-name, index",

+        "xml": "<set>\n<parameter name='ss.param.pnf-name2' value ='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />\n<parameter name='ss.param.pnf-name2-index' value='`$aidx`' />",

+        "comments": "",

+        "x": 1885.857265472412,

+        "y": 330.9286093711853,

+        "z": "de6615d.b5910e8",

+        "wires": []

+    },

+    {

+        "id": "8d9b71bd.4a778",

+        "type": "outcome",

+        "name": "ipv4-oam-address",

+        "xml": "<outcome value='ipv4-oam-address'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1703.7143363952637,

+        "y": 501.42857694625854,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "82ab755c.be9198"

+            ]

+        ]

+    },

+    {

+        "id": "82ab755c.be9198",

+        "type": "set",

+        "name": "set ss.param.ipv4-oam-address, index",

+        "xml": "<set>\n<parameter name='ss.param.ipv4-oam-address' value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />\n<parameter name='ss.param.ipv4-oam-address-index' value='`$aidx`' />",

+        "comments": "",

+        "x": 2009.107265472412,

+        "y": 501.17865324020386,

+        "z": "de6615d.b5910e8",

+        "wires": []

+    },

+    {

+        "id": "3935817d.ee66ee",

+        "type": "outcome",

+        "name": "ipv6-oam-address",

+        "xml": "<outcome value='ipv6-oam-address'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1703.7143363952637,

+        "y": 552.857165813446,

+        "z": "de6615d.b5910e8",

+        "wires": [

+            [

+                "2b822ef4.66ac12"

+            ]

+        ]

+    },

+    {

+        "id": "2b822ef4.66ac12",

+        "type": "set",

+        "name": "set ss.param.ipv6-oam-address, index",

+        "xml": "<set>\n<parameter name='ss.param.ipv6-oam-address' value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />\n<parameter name='ss.param.ipv6-oam-address-index' value='`$aidx`' />",

+        "comments": "",

+        "x": 2009.107265472412,

+        "y": 552.6072421073914,

+        "z": "de6615d.b5910e8",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-tenant-auth.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-tenant-auth.json
index d088858..8a5d8f9 100644
--- a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-tenant-auth.json
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-tenant-auth.json
@@ -1,212 +1,1305 @@
 [

-  {

-    "id": "b8581db5.dbca7",

-    "type": "get-resource",

-    "name": "get-resource service-subscription",

-    "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"service-subscription\" \n        key= 'service-subscription.service-type = $service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.subscription-service-type \n        AND customer.global-customer-id = $service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.global-customer-id'\n      force=\"true\" pfx=\"tmp.AnAI-data-tenant\">\n      \n",

-    "comments": "",

-    "outputs": 1,

-    "x": 597,

-    "y": 418.09522092342377,

-    "z": "a703782b.2992b8",

-    "wires": [

-      [

-        "1a771e75.f79d12",

-        "ac62029.181ce"

-      ]

-    ]

-  },

-  {

-    "id": "5d45ba87.92c374",

-    "type": "switchNode",

-    "name": "switch temp-ub-sub-account-id",

-    "xml": "<switch test='`$tmp.AnAI-data-tenant.temp-ub-sub-account-id`'>\n",

-    "comments": "",

-    "outputs": 1,

-    "x": 1009.0000915527344,

-    "y": 382.84530198574066,

-    "z": "a703782b.2992b8",

-    "wires": [

-      [

-        "5358b5db.d1e49c",

-        "28c300d9.7fa36"

-      ]

-    ]

-  },

-  {

-    "id": "5358b5db.d1e49c",

-    "type": "outcome",

-    "name": "NULL",

-    "xml": "<outcome value=''>",

-    "comments": "",

-    "outputs": 1,

-    "x": 1201.714542388916,

-    "y": 356.84534299373627,

-    "z": "a703782b.2992b8",

-    "wires": [

-      [

-        "831b80bb.e08e8"

-      ]

-    ]

-  },

-  {

-    "id": "28c300d9.7fa36",

-    "type": "other",

-    "name": "Other",

-    "xml": "<outcome value='Other'>",

-    "comments": "",

-    "outputs": 1,

-    "x": 1202.0001068115234,

-    "y": 411.8453058004379,

-    "z": "a703782b.2992b8",

-    "wires": [

-      [

-        "e1a74ece.52f65"

-      ]

-    ]

-  },

-  {

-    "id": "1a771e75.f79d12",

-    "type": "success",

-    "name": "success",

-    "xml": "<outcome value='success'>\n",

-    "comments": "",

-    "outputs": 1,

-    "x": 807.4998626708984,

-    "y": 390.84127938747406,

-    "z": "a703782b.2992b8",

-    "wires": [

-      [

-        "5d45ba87.92c374"

-      ]

-    ]

-  },

-  {

-    "id": "ac62029.181ce",

-    "type": "failure",

-    "name": "failure",

-    "xml": "<outcome value='failure'>\n",

-    "comments": "",

-    "outputs": 1,

-    "x": 801.1784515380859,

-    "y": 443.0555909872055,

-    "z": "a703782b.2992b8",

-    "wires": [

-      [

-        "f81e2009.7dbd5"

-      ]

-    ]

-  },

-  {

-    "id": "f81e2009.7dbd5",

-    "type": "returnFailure",

-    "name": "return failure",

-    "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing get token rest api\" />\n",

-    "comments": "",

-    "x": 953.9284515380859,

-    "y": 442.80565202236176,

-    "z": "a703782b.2992b8",

-    "wires": []

-  },

-  {

-    "id": "4bd31b43.411d14",

-    "type": "service-logic",

-    "name": "GENERIC-RESOURCE-API ${project.version}",

-    "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

-    "outputs": 1,

-    "x": 177,

-    "y": 145.23810708522797,

-    "z": "a703782b.2992b8",

-    "wires": [

-      [

-        "d79d2c6f.11854"

-      ]

-    ]

-  },

-  {

-    "id": "c863bd10.503ce",

-    "type": "dgstart",

-    "name": "DGSTART",

-    "outputs": 1,

-    "x": 97.71429443359375,

-    "y": 82.99999749660492,

-    "z": "a703782b.2992b8",

-    "wires": [

-      [

-        "4bd31b43.411d14"

-      ]

-    ]

-  },

-  {

-    "id": "5dc11f37.9dd37",

-    "type": "block",

-    "name": "block : atomic",

-    "xml": "<block atomic=\"true\">",

-    "atomic": "true",

-    "outputs": 1,

-    "x": 330.95240020751953,

-    "y": 381.8095315694809,

-    "z": "a703782b.2992b8",

-    "wires": [

-      [

-        "b8581db5.dbca7",

-        "c8c0bf77.157a7"

-      ]

-    ]

-  },

-  {

-    "id": "d79d2c6f.11854",

-    "type": "method",

-    "name": "method sdwan-get-tenant-auth",

-    "xml": "<method rpc='sdwan-get-tenant-auth' mode='sync'>\n",

-    "comments": "",

-    "outputs": 1,

-    "x": 188.71429443359375,

-    "y": 239.58633935451508,

-    "z": "a703782b.2992b8",

-    "wires": [

-      [

-        "5dc11f37.9dd37"

-      ]

-    ]

-  },

-  {

-    "id": "e1a74ece.52f65",

-    "type": "set",

-    "name": "set prop.tenant-id",

-    "xml": "<set>\n<parameter name='prop.tenant-id' value='`$tmp.AnAI-data-tenant.temp-ub-sub-account-id`' />\n",

-    "comments": "",

-    "x": 1379.857177734375,

-    "y": 410.9523614645004,

-    "z": "a703782b.2992b8",

-    "wires": []

-  },

-  {

-    "id": "c8c0bf77.157a7",

-    "type": "execute",

-    "name": "execute RestApiCallNode Create tenant auth",

-    "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/baseservice/tenants/authorization/' + $prop.tenant-id`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"tenant-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

-    "comments": "",

-    "outputs": 1,

-    "x": 624.5000305175781,

-    "y": 520.9880307912827,

-    "z": "a703782b.2992b8",

-    "wires": [

-      []

-    ]

-  },

-  {

-    "id": "831b80bb.e08e8",

-    "type": "returnFailure",

-    "name": "return failure",

-    "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing get token rest api\" />\n",

-    "comments": "",

-    "x": 1384.1427841186523,

-    "y": 356.6666520833969,

-    "z": "a703782b.2992b8",

-    "wires": []

-  }

-]

+    {

+        "id": "3eca748a.ef817c",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 123,

+        "y": 75,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "350fb0d5.88723"

+            ]

+        ]

+    },

+    {

+        "id": "350fb0d5.88723",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 368.2857131958008,

+        "y": 74.23807907104492,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "7fecfee8.d291b"

+            ]

+        ]

+    },

+    {

+        "id": "7fecfee8.d291b",

+        "type": "method",

+        "name": "validate-sdwan-vf-vpn-input-parameters",

+        "xml": "<method rpc='validate-sdwan-vf-vpn-input-parameters' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 451.9166946411133,

+        "y": 209.25301837921143,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "8f6f1f8b.897a9"

+            ]

+        ]

+    },

+    {

+        "id": "8f6f1f8b.897a9",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 735.9167022705078,

+        "y": 197.25304317474365,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "634b7128.2e84d",

+                "adb8eda0.ca986",

+                "bc20a4d8.66ea78",

+                "376a189c.5eea28"

+            ]

+        ]

+    },

+    {

+        "id": "634b7128.2e84d",

+        "type": "switchNode",

+        "name": "switch  svc-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 995.916633605957,

+        "y": 45.25303936004639,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "183ac3e9.257bcc"

+            ]

+        ]

+    },

+    {

+        "id": "183ac3e9.257bcc",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1186.6309356689453,

+        "y": 46.2530403137207,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "65be383e.39b058"

+            ]

+        ]

+    },

+    {

+        "id": "65be383e.39b058",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"sdnc-request-header.svc-request-id is a required input\" />\n",

+        "comments": "",

+        "x": 1361.0594863891602,

+        "y": 45.25303268432617,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "adb8eda0.ca986",

+        "type": "switchNode",

+        "name": "switch svc-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 332.9166564941406,

+        "y": 468.2530336380005,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "83c4de98.01196",

+                "ce7e74f7.3c86c8",

+                "147fd5d9.68de3a",

+                "1561519f.abda0e",

+                "d7c5bf00.510dc"

+            ]

+        ]

+    },

+    {

+        "id": "83c4de98.01196",

+        "type": "outcome",

+        "name": "create",

+        "xml": "<outcome value='create'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 526.5000228881836,

+        "y": 297.66667079925537,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "363f7231.506cbe"

+            ]

+        ]

+    },

+    {

+        "id": "363f7231.506cbe",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 687.5000228881836,

+        "y": 297.66667079925537,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "46be34f.5b2c7cc"

+            ]

+        ]

+    },

+    {

+        "id": "ce7e74f7.3c86c8",

+        "type": "outcome",

+        "name": "deactivate",

+        "xml": "<outcome value='deactivate'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 499.4920120239258,

+        "y": 906.428539276123,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "aec7db3f.798358"

+            ]

+        ]

+    },

+    {

+        "id": "147fd5d9.68de3a",

+        "type": "outcome",

+        "name": "delete",

+        "xml": "<outcome value='delete'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 503.20639419555664,

+        "y": 1077.1430969238281,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "c7708172.24701"

+            ]

+        ]

+    },

+    {

+        "id": "1561519f.abda0e",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 502.9682846069336,

+        "y": 1250.571382522583,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "b6252f6e.c1321"

+            ]

+        ]

+    },

+    {

+        "id": "b6252f6e.c1321",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`$vf-module-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`\" />\n",

+        "comments": "",

+        "x": 686.5398178100586,

+        "y": 1251.190523147583,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "46be34f.5b2c7cc",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 888,

+        "y": 295.6666797399521,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "3528f63.34e230a",

+                "82048a2c.348118"

+            ]

+        ]

+    },

+    {

+        "id": "3528f63.34e230a",

+        "type": "other",

+        "name": "Other",

+        "xml": "<outcome value='Other'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1073.4999923706055,

+        "y": 323.66667652130127,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "3198409.3ebdec"

+            ]

+        ]

+    },

+    {

+        "id": "3198409.3ebdec",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"request-information.request-action is required to be SOTN CreateVPNNetworkInstance for svc-action=create\" />\n",

+        "comments": "",

+        "x": 1224.0000228881836,

+        "y": 317.66667079925537,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "ee1459dc.d090c8",

+        "type": "other",

+        "name": "DeleteSDWANVpnInstance",

+        "xml": "<outcome value='DeleteSDWANVpnInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 945.0634384155273,

+        "y": 1073.698395729065,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "773b0668.3dfda8"

+            ]

+        ]

+    },

+    {

+        "id": "640b4312.a9c5ac",

+        "type": "other",

+        "name": "Other",

+        "xml": "<outcome value='Other'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 860.6189804077148,

+        "y": 1149.920636177063,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "20eafb56.ca5e14"

+            ]

+        ]

+    },

+    {

+        "id": "20eafb56.ca5e14",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"request-information.request-action is required to be SOTN DeleteVPNNetworkInstance for svc-action=delete\" />\n",

+        "comments": "",

+        "x": 1020.9524002075195,

+        "y": 1152.0317735671997,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "773b0668.3dfda8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1168.9523086547852,

+        "y": 1079.9206190109253,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "30507c3b.465aa4",

+                "b4bebf6c.2b4fa",

+                "b3df3a7b.216bd8",

+                "eb92e3d.8a6ff2"

+            ]

+        ]

+    },

+    {

+        "id": "d7c5bf00.510dc",

+        "type": "outcome",

+        "name": "activate",

+        "xml": "<outcome value='activate'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 520.4285774230957,

+        "y": 560.7143135070801,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "aa89a015.4408d"

+            ]

+        ]

+    },

+    {

+        "id": "aa89a015.4408d",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 703.2857437133789,

+        "y": 557.8571634292603,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "c1f6d379.b3eef",

+                "89075fc5.672ae"

+            ]

+        ]

+    },

+    {

+        "id": "c1f6d379.b3eef",

+        "type": "other",

+        "name": "ActivateSDWANVpnInstance",

+        "xml": "<outcome value='ActivateSDWANVpnInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 956.5000228881836,

+        "y": 537.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "ce665d03.3901d"

+            ]

+        ]

+    },

+    {

+        "id": "89075fc5.672ae",

+        "type": "other",

+        "name": "Other",

+        "xml": "<outcome value='Other'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 886.5000228881836,

+        "y": 577.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "c6e2911c.5f916"

+            ]

+        ]

+    },

+    {

+        "id": "c6e2911c.5f916",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"request-information.request-action is required to be SOTN ActivateVPNNetworkInstance for svc-action=activate\" />\n",

+        "comments": "",

+        "x": 1044.0000228881836,

+        "y": 577.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "ce665d03.3901d",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1187.5000228881836,

+        "y": 537.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "b3df3a7b.216bd8",

+                "30507c3b.465aa4",

+                "b4bebf6c.2b4fa",

+                "57bd5824.2497c8"

+            ]

+        ]

+    },

+    {

+        "id": "c598159a.7423c8",

+        "type": "other",

+        "name": "DeactivateSDWANVpnInstance",

+        "xml": "<outcome value='DeactivateSDWANVpnInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 942.9206390380859,

+        "y": 908.1429328918457,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "50af0272.e02a9c"

+            ]

+        ]

+    },

+    {

+        "id": "e01173d7.fe6b9",

+        "type": "other",

+        "name": "Other",

+        "xml": "<outcome value='Other'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 857.9206314086914,

+        "y": 977.1429405212402,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "d14295e9.c68018"

+            ]

+        ]

+    },

+    {

+        "id": "d14295e9.c68018",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"request-information.request-action is required to be SOTN DeactivateVPNNetworkInstance for svc-action=deactivate\" />\n",

+        "comments": "",

+        "x": 1038.9206466674805,

+        "y": 978.1429405212402,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "aec7db3f.798358",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 679.7776947021484,

+        "y": 910.6188039779663,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "c598159a.7423c8",

+                "e01173d7.fe6b9"

+            ]

+        ]

+    },

+    {

+        "id": "c7708172.24701",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 683.5554962158203,

+        "y": 1076.9523208141327,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "ee1459dc.d090c8",

+                "640b4312.a9c5ac"

+            ]

+        ]

+    },

+    {

+        "id": "50af0272.e02a9c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1202.888786315918,

+        "y": 910.9523277282715,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "30507c3b.465aa4",

+                "b4bebf6c.2b4fa",

+                "b3df3a7b.216bd8",

+                "c2db488a.b105a8"

+            ]

+        ]

+    },

+    {

+        "id": "82048a2c.348118",

+        "type": "other",

+        "name": "CreateSDWANVpnInstance",

+        "xml": "<outcome value='CreateSDWANVpnInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1172.499984741211,

+        "y": 276.6666679382324,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "7a0b5551.c75d9c"

+            ]

+        ]

+    },

+    {

+        "id": "7a0b5551.c75d9c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1407.49995803833,

+        "y": 275.6666679382324,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "3f52a78f.7ab728"

+            ]

+        ]

+    },

+    {

+        "id": "3f52a78f.7ab728",

+        "type": "for",

+        "name": "for loop i - vpn vf input parameters",

+        "xml": "<for index=\"i\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1638.000015258789,

+        "y": 276.6666679382324,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "d37b6b2c.71fb38"

+            ]

+        ]

+    },

+    {

+        "id": "d37b6b2c.71fb38",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1846.5000228881836,

+        "y": 277.66667079925537,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "9ec108e6.32a3b8",

+                "a16aa1da.005f3",

+                "3a20c40b.dcc4cc"

+            ]

+        ]

+    },

+    {

+        "id": "9ec108e6.32a3b8",

+        "type": "set",

+        "name": "clear tmp-data",

+        "xml": "<set>\n<parameter name='tmp.name' value='' />\n<parameter name='tmp.value' value='' />\n",

+        "comments": "",

+        "x": 2029.5000228881836,

+        "y": 237.66667079925537,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "a16aa1da.005f3",

+        "type": "set",

+        "name": "set tmp-data",

+        "xml": "<set>\n<parameter name='tmp.name' value=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].name`\"/>\n<parameter name='tmp.value' value=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].value`\"/>\n",

+        "comments": "",

+        "x": 2024.0000228881836,

+        "y": 277.66667079925537,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "3a20c40b.dcc4cc",

+        "type": "switchNode",

+        "name": "switch name",

+        "xml": "<switch test=\"`$tmp.name`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2024.0000228881836,

+        "y": 317.66667079925537,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "3280408b.66ab3",

+                "63ad3611.30c718",

+                "2eab978e.1492a8"

+            ]

+        ]

+    },

+    {

+        "id": "d22ab892.eef718",

+        "type": "switchNode",

+        "name": "switch value",

+        "xml": "<switch test=\"`$tmp.value`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2484.0001907348633,

+        "y": 269.66669142246246,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "b07f67fa.6ab208"

+            ]

+        ]

+    },

+    {

+        "id": "2eab978e.1492a8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2243.500358581543,

+        "y": 335.66667902469635,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "5967794c.72e8b8"

+            ]

+        ]

+    },

+    {

+        "id": "5967794c.72e8b8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[' + $i + ']' + '.name is a required input'`\" />\n",

+        "comments": "",

+        "x": 2418.5003623962402,

+        "y": 334.66667902469635,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "3280408b.66ab3",

+        "type": "other",

+        "name": "name",

+        "xml": "<outcome value='name'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2243.500358581543,

+        "y": 219.66667330265045,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "d22ab892.eef718"

+            ]

+        ]

+    },

+    {

+        "id": "63ad3611.30c718",

+        "type": "other",

+        "name": "topology",

+        "xml": "<outcome value='topology'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2255.500114440918,

+        "y": 273.333335518837,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "d22ab892.eef718"

+            ]

+        ]

+    },

+    {

+        "id": "b07f67fa.6ab208",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2627.5001907348633,

+        "y": 269.66669142246246,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "3ecabf5c.8d652"

+            ]

+        ]

+    },

+    {

+        "id": "3ecabf5c.8d652",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'vf-module-request-input.vf-module-input-parameters.param '+ $tmp.name +' is a required input'`\" />\n",

+        "comments": "",

+        "x": 2785.5001907348633,

+        "y": 269.66669142246246,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "b3df3a7b.216bd8",

+        "type": "switchNode",

+        "name": "switch service-data.vf-modules.vf-module_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1479.3889541625977,

+        "y": 576.9999761581421,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "37913775.d258a8",

+                "8c9e338f.0d83c"

+            ]

+        ]

+    },

+    {

+        "id": "37913775.d258a8",

+        "type": "other",

+        "name": "outcome Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1748.0000228881836,

+        "y": 556.666711807251,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "7c4231f0.9cbb7"

+            ]

+        ]

+    },

+    {

+        "id": "7c4231f0.9cbb7",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 1924.0000228881836,

+        "y": 557.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "8c9e338f.0d83c",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1726.5000228881836,

+        "y": 597.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "b6f61e8c.9dd35"

+            ]

+        ]

+    },

+    {

+        "id": "b6f61e8c.9dd35",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1887.5000228881836,

+        "y": 597.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "9317c153.6ccad",

+                "bdedbaa4.65e588"

+            ]

+        ]

+    },

+    {

+        "id": "9317c153.6ccad",

+        "type": "for",

+        "name": "for nidx..service-data.vf-modules.vf-module[]",

+        "xml": "<for index='nidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2150.0000228881836,

+        "y": 577.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "1fade275.78b10e"

+            ]

+        ]

+    },

+    {

+        "id": "1fade275.78b10e",

+        "type": "switchNode",

+        "name": "switch vf-module-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n    \n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2436.0000228881836,

+        "y": 577.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "99a1d82a.9dd8c8"

+            ]

+        ]

+    },

+    {

+        "id": "99a1d82a.9dd8c8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2606.5000228881836,

+        "y": 577.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "39ae6a67.1c8296"

+            ]

+        ]

+    },

+    {

+        "id": "70e3cfee.6e895",

+        "type": "set",

+        "name": "set tmp.nidx and ctx.network-data",

+        "xml": "<set>\n<parameter name='tmp.nidx' value='`$nidx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-data.`' />\n",

+        "comments": "",

+        "x": 3007.50008392334,

+        "y": 574.6667140722275,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "1412cffb.8d463",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 2364.0000228881836,

+        "y": 617.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "fbeeeb3e.43c3b8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2226.5000228881836,

+        "y": 617.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "1412cffb.8d463"

+            ]

+        ]

+    },

+    {

+        "id": "bdedbaa4.65e588",

+        "type": "switchNode",

+        "name": "switch tmp.nidx ",

+        "xml": "<switch test=\"`$tmp.nidx`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2072.5000228881836,

+        "y": 617.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "fbeeeb3e.43c3b8"

+            ]

+        ]

+    },

+    {

+        "id": "57bd5824.2497c8",

+        "type": "switchNode",

+        "name": "switch network-level-oper-status",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1451.6667098999023,

+        "y": 656.5555486679077,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "719dd138.28ef4",

+                "2dca8a18.a65586"

+            ]

+        ]

+    },

+    {

+        "id": "719dd138.28ef4",

+        "type": "outcome",

+        "name": "outcome Created",

+        "xml": "<outcome value='Created'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1748.5001258850098,

+        "y": 656.5555467605591,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "94e9cf1a.6c399"

+            ]

+        ]

+    },

+    {

+        "id": "2dca8a18.a65586",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1716.5001258850098,

+        "y": 696.5555467605591,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "2c8432e2.7a0b8e"

+            ]

+        ]

+    },

+    {

+        "id": "2c8432e2.7a0b8e",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'vf-module is not in appropriate state for activate. Current state is ' + $service-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`\" />\n",

+        "comments": "",

+        "x": 1874.0001258850098,

+        "y": 696.5555467605591,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "b4bebf6c.2b4fa",

+        "type": "switchNode",

+        "name": "switch vf-module-id",

+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1398.5000228881836,

+        "y": 517.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "9ad9b806.2c19b8"

+            ]

+        ]

+    },

+    {

+        "id": "9ad9b806.2c19b8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1626.5000228881836,

+        "y": 517.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "b7b28733.f37c08"

+            ]

+        ]

+    },

+    {

+        "id": "b7b28733.f37c08",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"network-request-input.network-input-parameters.name is a required input\" />\n",

+        "comments": "",

+        "x": 1764.0000228881836,

+        "y": 517.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "30507c3b.465aa4",

+        "type": "execute",

+        "name": "execute requiredParameters",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\n<parameter name=\"vf-module-topology-operation-input.vf-module-information.vf-module-id\" value=\"$vf-module-topology-operation-input.vf-module-information.vf-module-id\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1433.0000228881836,

+        "y": 477.66667079925537,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c2db488a.b105a8",

+        "type": "switchNode",

+        "name": "switch network-level-oper-status",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1479.8332748413086,

+        "y": 906.5555257797241,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "cf4b307b.b1b04",

+                "acc49742.fd0df8"

+            ]

+        ]

+    },

+    {

+        "id": "cf4b307b.b1b04",

+        "type": "outcome",

+        "name": "outcome Active",

+        "xml": "<outcome value='Active'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1753.166648864746,

+        "y": 880.9999837875366,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "e31a54a2.3ff1f8"

+            ]

+        ]

+    },

+    {

+        "id": "acc49742.fd0df8",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1723.166648864746,

+        "y": 920.9999837875366,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "bc3125bf.c135a8"

+            ]

+        ]

+    },

+    {

+        "id": "bc3125bf.c135a8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'vf-module is not in appropriate state for deactivate. Current state is ' + $service-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`\" />\n    ",

+        "comments": "",

+        "x": 1889.166648864746,

+        "y": 922.9999837875366,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "eb92e3d.8a6ff2",

+        "type": "switchNode",

+        "name": "switch network-level-oper-status",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1468.7221908569336,

+        "y": 1077.6666097640991,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "4005e1e5.db606",

+                "3f0b16e4.30f1ca"

+            ]

+        ]

+    },

+    {

+        "id": "4005e1e5.db606",

+        "type": "outcome",

+        "name": "outcome PendingDelete",

+        "xml": "<outcome value='PendingDelete'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1768.7222518920898,

+        "y": 1045.444405555725,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "e99f233c.ef676"

+            ]

+        ]

+    },

+    {

+        "id": "3f0b16e4.30f1ca",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1712.055564880371,

+        "y": 1092.1110677719116,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "26e244b4.b2362c"

+            ]

+        ]

+    },

+    {

+        "id": "26e244b4.b2362c",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'vf-module is not in appropriate state for delete. Current state is ' + $service-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`\" />\n",

+        "comments": "",

+        "x": 1878.055564880371,

+        "y": 1094.1110677719116,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "94e9cf1a.6c399",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1940.5001029968262,

+        "y": 657.6666488647461,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e31a54a2.3ff1f8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1953.1665267944336,

+        "y": 879.1481161117554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e99f233c.ef676",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1984.277732849121,

+        "y": 1045.8147420883179,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "39ae6a67.1c8296",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2756.666534423828,

+        "y": 574.0000190734863,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "70e3cfee.6e895"

+            ]

+        ]

+    },

+    {

+        "id": "bc20a4d8.66ea78",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 971.0065307617188,

+        "y": 121.24849605560303,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "ae64d058.26533"

+            ]

+        ]

+    },

+    {

+        "id": "ae64d058.26533",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1151.0065116882324,

+        "y": 120.24848556518555,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "d4c5df8d.2e7e3"

+            ]

+        ]

+    },

+    {

+        "id": "d4c5df8d.2e7e3",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf entry not found in service-data\" />\n",

+        "comments": "",

+        "x": 1300.4352378845215,

+        "y": 121.39140319824219,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "376a189c.5eea28",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 951.0379104614258,

+        "y": 183.51763439178467,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "891fced5.d7d06"

+            ]

+        ]

+    },

+    {

+        "id": "891fced5.d7d06",

+        "type": "switchNode",

+        "name": "switch this vnf-id == input vnf-id",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\">    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1189.0065269470215,

+        "y": 183.2484917640686,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "2828372d.9354b8"

+            ]

+        ]

+    },

+    {

+        "id": "2828372d.9354b8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1404.0065116882324,

+        "y": 181.24848556518555,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "56c573f0.8eef8c"

+            ]

+        ]

+    },

+    {

+        "id": "56c573f0.8eef8c",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1568.0065116882324,

+        "y": 176.24848556518555,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-device-param.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-device-param.json
new file mode 100644
index 0000000..8a96be9
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-device-param.json
@@ -0,0 +1,551 @@
+[

+    {

+        "id": "5f7afc20.704254",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 164.00390625,

+        "y": 81.99999871850014,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "d406ff84.ce98e"

+            ]

+        ]

+    },

+    {

+        "id": "d406ff84.ce98e",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 309.00391006469727,

+        "y": 163.00001588463783,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "de9e8cab.e6f6e"

+            ]

+        ]

+    },

+    {

+        "id": "de9e8cab.e6f6e",

+        "type": "method",

+        "name": "sdwan-get-vf-module-device-param",

+        "xml": "<method rpc='sdwan-get-vf-module-device-param' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 297.0040283203125,

+        "y": 250.99999871850014,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "d35337b3.c33088"

+            ]

+        ]

+    },

+    {

+        "id": "d35337b3.c33088",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 304.00392150878906,

+        "y": 337.00005689263344,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "768c22f7.0cb24c"

+            ]

+        ]

+    },

+    {

+        "id": "768c22f7.0cb24c",

+        "type": "for",

+        "name": "for each sdwan-get-request-input-param",

+        "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 340.6706848144531,

+        "y": 419.66665330529213,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "e9dd53c5.9b95c"

+            ]

+        ]

+    },

+    {

+        "id": "e9dd53c5.9b95c",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 598.9982223510742,

+        "y": 415.99431481957436,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "32b23dbd.651cc2",

+                "a532fa29.a02ba8",

+                "a0a56af7.f42cf8",

+                "9b473841.95e738",

+                "6e94beb9.da533",

+                "f818f130.64cf3",

+                "833242d8.e1a62",

+                "463a228c.d26a9c",

+                "e732bba8.4d48f8",

+                "88a6e509.9d3208",

+                "b49703f2.4b839"

+            ]

+        ]

+    },

+    {

+        "id": "32b23dbd.651cc2",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 806.4988403320312,

+        "y": 707.9948875010014,

+        "z": "492d4750.cb7708",

+        "wires": []

+    },

+    {

+        "id": "a0a56af7.f42cf8",

+        "type": "switchNode",

+        "name": "switch name",

+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 834.4979286193848,

+        "y": 260.9942981302738,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "46f8e7aa.98fa98"

+            ]

+        ]

+    },

+    {

+        "id": "46f8e7aa.98fa98",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 976.4979286193848,

+        "y": 261.9942981302738,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "f768ea22.72bf98"

+            ]

+        ]

+    },

+    {

+        "id": "f768ea22.72bf98",

+        "type": "set",

+        "name": "set name",

+        "xml": "<set>\n<parameter name='prop.device.name' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1110.4979286193848,

+        "y": 262.59430423378944,

+        "z": "492d4750.cb7708",

+        "wires": []

+    },

+    {

+        "id": "a532fa29.a02ba8",

+        "type": "switchNode",

+        "name": "switch esn",

+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'esn'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 827.3376741409302,

+        "y": 297.99423709511757,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "12a81e82.d1a6f1"

+            ]

+        ]

+    },

+    {

+        "id": "12a81e82.d1a6f1",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 971.3376741409302,

+        "y": 297.99423709511757,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "a977ec3e.312ec"

+            ]

+        ]

+    },

+    {

+        "id": "a977ec3e.312ec",

+        "type": "set",

+        "name": "set esn",

+        "xml": "<set>\n<parameter name='prop.device.esn' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1091.6710481643677,

+        "y": 297.45541873574257,

+        "z": "492d4750.cb7708",

+        "wires": []

+    },

+    {

+        "id": "9b473841.95e738",

+        "type": "switchNode",

+        "name": "switch type",

+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'type'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 815.3930940628052,

+        "y": 372.9571887552738,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "3ec28d96.e420a2"

+            ]

+        ]

+    },

+    {

+        "id": "6e94beb9.da533",

+        "type": "switchNode",

+        "name": "switch systemIp",

+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'systemIp'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 815.3931522369385,

+        "y": 464.9572059214115,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "2adae6a4.285e7a"

+            ]

+        ]

+    },

+    {

+        "id": "3ec28d96.e420a2",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 961.3930940628052,

+        "y": 372.9571887552738,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "45b1ca2c.89f074"

+            ]

+        ]

+    },

+    {

+        "id": "45b1ca2c.89f074",

+        "type": "set",

+        "name": "set type",

+        "xml": "<set>\n<parameter name='prop.device.deviceModel' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1092.3930940628052,

+        "y": 372.55719485878944,

+        "z": "492d4750.cb7708",

+        "wires": []

+    },

+    {

+        "id": "2adae6a4.285e7a",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 961.3931522369385,

+        "y": 461.9572059214115,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "a141079c.b2f848"

+            ]

+        ]

+    },

+    {

+        "id": "a141079c.b2f848",

+        "type": "set",

+        "name": "set systemIp",

+        "xml": "<set>\n<parameter name='prop.device.systemIP' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1104.3931522369385,

+        "y": 460.55721202492714,

+        "z": "492d4750.cb7708",

+        "wires": []

+    },

+    {

+        "id": "c177b296.16b4e",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 971.3931522369385,

+        "y": 497.9572059214115,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "1718a85d.d8d638"

+            ]

+        ]

+    },

+    {

+        "id": "f818f130.64cf3",

+        "type": "switchNode",

+        "name": "switch description",

+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'description'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 817.3931522369385,

+        "y": 500.9572059214115,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "c177b296.16b4e"

+            ]

+        ]

+    },

+    {

+        "id": "1718a85d.d8d638",

+        "type": "set",

+        "name": "set description",

+        "xml": "<set>\n<parameter name='prop.device.description' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1114.3931522369385,

+        "y": 496.55721202492714,

+        "z": "492d4750.cb7708",

+        "wires": []

+    },

+    {

+        "id": "833242d8.e1a62",

+        "type": "switchNode",

+        "name": "switch vendor",

+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'vendor'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 804.7264375686646,

+        "y": 547.9572402536869,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "633adfee.bdc3d"

+            ]

+        ]

+    },

+    {

+        "id": "633adfee.bdc3d",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 972.7263956069946,

+        "y": 544.9571811258793,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "630caf06.a577a"

+            ]

+        ]

+    },

+    {

+        "id": "630caf06.a577a",

+        "type": "set",

+        "name": "set vendor",

+        "xml": "<set>\n<parameter name='prop.device.vendor' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1115.7263956069946,

+        "y": 543.5571872293949,

+        "z": "492d4750.cb7708",

+        "wires": []

+    },

+    {

+        "id": "463a228c.d26a9c",

+        "type": "switchNode",

+        "name": "switch class",

+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'class'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 828.4978942871094,

+        "y": 334.99424281716347,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "b2250b2e.750348"

+            ]

+        ]

+    },

+    {

+        "id": "b2250b2e.750348",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 972.4978942871094,

+        "y": 334.99424281716347,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "810d94ea.a48138"

+            ]

+        ]

+    },

+    {

+        "id": "810d94ea.a48138",

+        "type": "set",

+        "name": "set class",

+        "xml": "<set>\n<parameter name='prop.device.class' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1092.8312683105469,

+        "y": 334.45542445778847,

+        "z": "492d4750.cb7708",

+        "wires": []

+    },

+    {

+        "id": "e732bba8.4d48f8",

+        "type": "switchNode",

+        "name": "switch version",

+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'version'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 826.4978942871094,

+        "y": 418.99424281716347,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "3d7ee8b7.466ab8"

+            ]

+        ]

+    },

+    {

+        "id": "3d7ee8b7.466ab8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 972.4978942871094,

+        "y": 415.99424281716347,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "314ae7d6.dc68d8"

+            ]

+        ]

+    },

+    {

+        "id": "314ae7d6.dc68d8",

+        "type": "set",

+        "name": "set version",

+        "xml": "<set>\n<parameter name='prop.device.version' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1115.4978942871094,

+        "y": 414.5942489206791,

+        "z": "492d4750.cb7708",

+        "wires": []

+    },

+    {

+        "id": "88a6e509.9d3208",

+        "type": "switchNode",

+        "name": "switch deviceId",

+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'deviceId'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 818.4979629516602,

+        "y": 594.9942914545536,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "46303600.72a7ac"

+            ]

+        ]

+    },

+    {

+        "id": "46303600.72a7ac",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 974.4980506896973,

+        "y": 590.9943362772465,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "ba71d8b.57ad228"

+            ]

+        ]

+    },

+    {

+        "id": "ba71d8b.57ad228",

+        "type": "set",

+        "name": "set deviceId",

+        "xml": "<set>\n<parameter name='prop.device.deviceId' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1112.8317985534668,

+        "y": 579.4554721415043,

+        "z": "492d4750.cb7708",

+        "wires": []

+    },

+    {

+        "id": "b49703f2.4b839",

+        "type": "switchNode",

+        "name": "switch sdncCreate",

+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'sdncCreate'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 813.497917175293,

+        "y": 640.9942537844181,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "7e203582.a2c85c"

+            ]

+        ]

+    },

+    {

+        "id": "7e203582.a2c85c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 978.4979782104492,

+        "y": 637.9943148195744,

+        "z": "492d4750.cb7708",

+        "wires": [

+            [

+                "840a186.e7a4be8"

+            ]

+        ]

+    },

+    {

+        "id": "840a186.e7a4be8",

+        "type": "set",

+        "name": "set sdncCreate",

+        "xml": "<set>\n<parameter name='prop.device.sdncCreate' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1127.8317184448242,

+        "y": 636.4554354250431,

+        "z": "492d4750.cb7708",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-lanport-param.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-lanport-param.json
new file mode 100644
index 0000000..4bb3138
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-lanport-param.json
@@ -0,0 +1,507 @@
+[

+    {

+        "id": "3208e6b7.8cb61a",

+        "type": "for",

+        "name": "for each sdwan-get-request-input-param",

+        "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 327,

+        "y": 415.6666383743286,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": [

+            [

+                "5e79a667.e36978"

+            ]

+        ]

+    },

+    {

+        "id": "bb96599.94117a8",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 159.3332290649414,

+        "y": 78,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": [

+            [

+                "619534b0.e7c14c"

+            ]

+        ]

+    },

+    {

+        "id": "619534b0.e7c14c",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 304.3332328796387,

+        "y": 159.0000171661377,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": [

+            [

+                "fa9cc521.66a538"

+            ]

+        ]

+    },

+    {

+        "id": "fa9cc521.66a538",

+        "type": "method",

+        "name": "sdwan-get-vf-module-lanport-param",

+        "xml": "<method rpc='sdwan-get-vf-module-lanport-param' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 292.3333511352539,

+        "y": 247,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": [

+            [

+                "9745a419.00eab8"

+            ]

+        ]

+    },

+    {

+        "id": "9745a419.00eab8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 299.33324432373047,

+        "y": 333.0000581741333,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": [

+            [

+                "3208e6b7.8cb61a"

+            ]

+        ]

+    },

+    {

+        "id": "5e79a667.e36978",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 583.2326469421387,

+        "y": 418.0103905200958,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": [

+            [

+                "c8ef8603.ded258",

+                "de743e37.2d6ef",

+                "74590dc6.2a74a4",

+                "24b13d58.52ec12",

+                "c43795e3.062a98",

+                "575ca25e.3b0f5c",

+                "e5fd35dc.3490a8",

+                "6a33fd1e.0f98c4",

+                "f22f3b86.1d2998",

+                "c6929deb.bb79b"

+            ]

+        ]

+    },

+    {

+        "id": "c8ef8603.ded258",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 777.7332534790039,

+        "y": 708.0107636451721,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": []

+    },

+    {

+        "id": "74590dc6.2a74a4",

+        "type": "switchNode",

+        "name": "switch deviceName",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'deviceName'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 805.7326431274414,

+        "y": 345.01042914390564,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": [

+            [

+                "beaed204.71603"

+            ]

+        ]

+    },

+    {

+        "id": "beaed204.71603",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 980.7330360412598,

+        "y": 343.01051592826843,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": [

+            [

+                "b55ea4ff.9cde28"

+            ]

+        ]

+    },

+    {

+        "id": "b55ea4ff.9cde28",

+        "type": "set",

+        "name": "set deviceName",

+        "xml": "<set>\n<parameter name='prop.lan.deviceName' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1155.7331199645996,

+        "y": 344.61056327819824,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": []

+    },

+    {

+        "id": "e5fd35dc.3490a8",

+        "type": "switchNode",

+        "name": "switch vlanId",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'vlanId'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 783.5727691650391,

+        "y": 552.0104854106903,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": [

+            [

+                "99b2d592.8926d8"

+            ]

+        ]

+    },

+    {

+        "id": "99b2d592.8926d8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 976.5727577209473,

+        "y": 554.0105578899384,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": [

+            [

+                "e0277d38.f11f6"

+            ]

+        ]

+    },

+    {

+        "id": "e0277d38.f11f6",

+        "type": "set",

+        "name": "set vlanId",

+        "xml": "<set>\n<parameter name='prop.lan.vlanId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1122.9065856933594,

+        "y": 555.4718005657196,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": []

+    },

+    {

+        "id": "575ca25e.3b0f5c",

+        "type": "switchNode",

+        "name": "switch ipAddress",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'ipAddress'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 792.6279563903809,

+        "y": 510.3871638774872,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": [

+            [

+                "e7a176a1.ce4358"

+            ]

+        ]

+    },

+    {

+        "id": "e7a176a1.ce4358",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 977.6280975341797,

+        "y": 510.38712096214294,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": [

+            [

+                "d2f3c8c4.499528"

+            ]

+        ]

+    },

+    {

+        "id": "d2f3c8c4.499528",

+        "type": "set",

+        "name": "set ipAddress",

+        "xml": "<set>\n<parameter name='prop.lan.ipAddress' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1141.9619789123535,

+        "y": 511.8483989238739,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": []

+    },

+    {

+        "id": "c43795e3.062a98",

+        "type": "switchNode",

+        "name": "switch portNumber",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'portNumber'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 798.9610862731934,

+        "y": 469.00466132164,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": [

+            [

+                "7eda0cd0.bddb34"

+            ]

+        ]

+    },

+    {

+        "id": "7eda0cd0.bddb34",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 980.9611854553223,

+        "y": 471.00467467308044,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": [

+            [

+                "f1d0b896.8928d8"

+            ]

+        ]

+    },

+    {

+        "id": "f1d0b896.8928d8",

+        "type": "set",

+        "name": "set portNumber",

+        "xml": "<set>\n<parameter name='prop.lan.portNumber' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1150.961597442627,

+        "y": 469.60469126701355,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": []

+    },

+    {

+        "id": "24b13d58.52ec12",

+        "type": "switchNode",

+        "name": "switch portType",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'portType'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 788.8561058044434,

+        "y": 426.9779860973358,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": [

+            [

+                "945d6482.e4ba88"

+            ]

+        ]

+    },

+    {

+        "id": "945d6482.e4ba88",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 983.8561782836914,

+        "y": 427.9780204296112,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": [

+            [

+                "51acc9c3.2fe3b8"

+            ]

+        ]

+    },

+    {

+        "id": "51acc9c3.2fe3b8",

+        "type": "set",

+        "name": "set portType",

+        "xml": "<set>\n<parameter name='prop.lan.portType' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1141.8565788269043,

+        "y": 425.57802534103394,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": []

+    },

+    {

+        "id": "de743e37.2d6ef",

+        "type": "switchNode",

+        "name": "switch id",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'id'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 789.7319984436035,

+        "y": 296.3970763683319,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": [

+            [

+                "5d9145a5.3659cc"

+            ]

+        ]

+    },

+    {

+        "id": "5d9145a5.3659cc",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 981.7319221496582,

+        "y": 296.3970830440521,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": [

+            [

+                "e87eb6bc.61a328"

+            ]

+        ]

+    },

+    {

+        "id": "e87eb6bc.61a328",

+        "type": "set",

+        "name": "set id",

+        "xml": "<set>\n<parameter name='prop.lan.id' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1125.7321891784668,

+        "y": 295.99721121788025,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": []

+    },

+    {

+        "id": "6a33fd1e.0f98c4",

+        "type": "switchNode",

+        "name": "switch portSwitch",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'portSwitch'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 795.7324638366699,

+        "y": 388.0207631587982,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": [

+            [

+                "f0a564e5.e03788"

+            ]

+        ]

+    },

+    {

+        "id": "f0a564e5.e03788",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 980.7323989868164,

+        "y": 386.02081274986267,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": [

+            [

+                "607e93f6.70105c"

+            ]

+        ]

+    },

+    {

+        "id": "607e93f6.70105c",

+        "type": "set",

+        "name": "set portSwitch",

+        "xml": "<set>\n<parameter name='prop.lan.portSwitch' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1152.7327842712402,

+        "y": 386.6208064556122,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": []

+    },

+    {

+        "id": "f22f3b86.1d2998",

+        "type": "switchNode",

+        "name": "switch devicePortId",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'devicePortId'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 799.0000152587891,

+        "y": 596.0000171661377,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": [

+            [

+                "e1bc8bda.eb9038"

+            ]

+        ]

+    },

+    {

+        "id": "e1bc8bda.eb9038",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 968.0000286102295,

+        "y": 596.0000991821289,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": [

+            [

+                "d2ef0983.267148"

+            ]

+        ]

+    },

+    {

+        "id": "d2ef0983.267148",

+        "type": "set",

+        "name": "set devicePortId",

+        "xml": "<set>\n<parameter name='prop.lan.devicePortId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1126.3338165283203,

+        "y": 599.4613151550293,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": []

+    },

+    {

+        "id": "c6929deb.bb79b",

+        "type": "switchNode",

+        "name": "switch lanPortId",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'lanPortId'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 781,

+        "y": 652,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": [

+            [

+                "3b76a25e.db01ce"

+            ]

+        ]

+    },

+    {

+        "id": "3b76a25e.db01ce",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 973.9999885559082,

+        "y": 654.000072479248,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": [

+            [

+                "5afdfd4e.d87a04"

+            ]

+        ]

+    },

+    {

+        "id": "5afdfd4e.d87a04",

+        "type": "set",

+        "name": "set lanPortId",

+        "xml": "<set>\n<parameter name='prop.lan.lanPortId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1120.3338165283203,

+        "y": 655.4613151550293,

+        "z": "f5fe05ac.3dbcd8",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-site-param.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-site-param.json
new file mode 100644
index 0000000..4565c4d
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-site-param.json
@@ -0,0 +1,910 @@
+[

+    {

+        "id": "484180f6.294fb",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 121.00390625,

+        "y": 54.00390625,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "39a32e97.7d2bf2"

+            ]

+        ]

+    },

+    {

+        "id": "39a32e97.7d2bf2",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 299.00391006469727,

+        "y": 119.0039234161377,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "cdd33b78.958888"

+            ]

+        ]

+    },

+    {

+        "id": "cdd33b78.958888",

+        "type": "method",

+        "name": "sdwan-get-vf-module-site-param",

+        "xml": "<method rpc='sdwan-get-vf-module-site-param' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 287.0040283203125,

+        "y": 207.00390625,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "3b8b7ba0.ba9d74"

+            ]

+        ]

+    },

+    {

+        "id": "3b8b7ba0.ba9d74",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 294.00392150878906,

+        "y": 293.0039644241333,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "cf281c73.11274"

+            ]

+        ]

+    },

+    {

+        "id": "cf281c73.11274",

+        "type": "for",

+        "name": "for each sdwan-get-request-input-param",

+        "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 330.6706848144531,

+        "y": 375.670560836792,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "f885ce18.55215"

+            ]

+        ]

+    },

+    {

+        "id": "f885ce18.55215",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 617.5042343139648,

+        "y": 293.00400829315186,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "4a5ce4fc.97fe0c",

+                "f4cc368c.35bde8",

+                "70d53de2.3d5724",

+                "b1d10119.2f141",

+                "6aa3af3.d91fd5",

+                "3a7c3a06.65f626",

+                "50debd23.9a1de4",

+                "4dc3fc8d.6fd204",

+                "b069280b.7f4bd8",

+                "5aa9fa90.43fe74",

+                "db390dd0.a9e2a",

+                "fd28eb0c.be3ba8",

+                "8406a399.f2e3e",

+                "b6ec51e3.02bd9"

+            ]

+        ]

+    },

+    {

+        "id": "4a5ce4fc.97fe0c",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 819.005012512207,

+        "y": 726.0046715736389,

+        "z": "3ab9f09a.78056",

+        "wires": []

+    },

+    {

+        "id": "f4cc368c.35bde8",

+        "type": "switchNode",

+        "name": "switch name",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 837.0039443969727,

+        "y": 89.003981590271,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "34b7e315.1a243c"

+            ]

+        ]

+    },

+    {

+        "id": "34b7e315.1a243c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 979.0039443969727,

+        "y": 90.003981590271,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "b4b588e9.e7c4f8"

+            ]

+        ]

+    },

+    {

+        "id": "b4b588e9.e7c4f8",

+        "type": "set",

+        "name": "set name",

+        "xml": "<set>\n<parameter name='prop.site.name' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1113.0039443969727,

+        "y": 90.60398769378662,

+        "z": "3ab9f09a.78056",

+        "wires": []

+    },

+    {

+        "id": "70d53de2.3d5724",

+        "type": "switchNode",

+        "name": "switch name",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 833.0040512084961,

+        "y": 180.00393962860107,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "bd7892f2.73131"

+            ]

+        ]

+    },

+    {

+        "id": "bd7892f2.73131",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1011.0040645599365,

+        "y": 183.00393962860107,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "a01e32db.c7d83"

+            ]

+        ]

+    },

+    {

+        "id": "a01e32db.c7d83",

+        "type": "set",

+        "name": "set name",

+        "xml": "<set>\n<parameter name='prop.site.name' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1158.0040740966797,

+        "y": 182.60393524169922,

+        "z": "3ab9f09a.78056",

+        "wires": []

+    },

+    {

+        "id": "5aa9fa90.43fe74",

+        "type": "switchNode",

+        "name": "switch type",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'type'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 811.8997230529785,

+        "y": 477.9773893356323,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "1b07ddd4.378392"

+            ]

+        ]

+    },

+    {

+        "id": "69d26327.61da0c",

+        "type": "set",

+        "name": "set type",

+        "xml": "<set>\n<parameter name='prop.site.type' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n<parameter name='prop.site.sdwan' value='true' />",

+        "comments": "",

+        "x": 1463.8997840881348,

+        "y": 531.5773239135742,

+        "z": "3ab9f09a.78056",

+        "wires": []

+    },

+    {

+        "id": "db390dd0.a9e2a",

+        "type": "switchNode",

+        "name": "switch role",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'role'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 810.8994369506836,

+        "y": 585.9774322509766,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "e69860a9.0015d"

+            ]

+        ]

+    },

+    {

+        "id": "e69860a9.0015d",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 980.8994445800781,

+        "y": 595.9773950576782,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "9cd4ca73.3ac2d8"

+            ]

+        ]

+    },

+    {

+        "id": "b1d10119.2f141",

+        "type": "switchNode",

+        "name": "switch location-name",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'location-name'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 855.8992385864258,

+        "y": 221.9772481918335,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "8a7e81ba.e5188"

+            ]

+        ]

+    },

+    {

+        "id": "8a7e81ba.e5188",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1019.8994102478027,

+        "y": 221.9772491455078,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "f5bb619c.343e3"

+            ]

+        ]

+    },

+    {

+        "id": "f5bb619c.343e3",

+        "type": "set",

+        "name": "set location-name",

+        "xml": "<set>\n<parameter name='prop.site.location-name' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1181.8994216918945,

+        "y": 221.5773057937622,

+        "z": "3ab9f09a.78056",

+        "wires": []

+    },

+    {

+        "id": "6aa3af3.d91fd5",

+        "type": "switchNode",

+        "name": "switch address",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'address'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 838.8992385864258,

+        "y": 257.97725200653076,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "3614458a.d4ba8a"

+            ]

+        ]

+    },

+    {

+        "id": "3614458a.d4ba8a",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1008.8990859985352,

+        "y": 265.97725105285645,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "8230e765.9acfa8"

+            ]

+        ]

+    },

+    {

+        "id": "8230e765.9acfa8",

+        "type": "set",

+        "name": "set location-address",

+        "xml": "<set>\n<parameter name='prop.site.location-address' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1196.8992614746094,

+        "y": 261.57722663879395,

+        "z": "3ab9f09a.78056",

+        "wires": []

+    },

+    {

+        "id": "3a7c3a06.65f626",

+        "type": "switchNode",

+        "name": "switch postcode",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'postcode'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 839.8992385864258,

+        "y": 299.9772129058838,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "17049263.1424ae"

+            ]

+        ]

+    },

+    {

+        "id": "17049263.1424ae",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1004.8994102478027,

+        "y": 298.9772129058838,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "6c71f682.a61eb8"

+            ]

+        ]

+    },

+    {

+        "id": "6c71f682.a61eb8",

+        "type": "set",

+        "name": "set location-postcode",

+        "xml": "<set>\n<parameter name='prop.site.location-postcode' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1191.8992614746094,

+        "y": 300.5772294998169,

+        "z": "3ab9f09a.78056",

+        "wires": []

+    },

+    {

+        "id": "fd28eb0c.be3ba8",

+        "type": "switchNode",

+        "name": "switch controlPoint",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'controlPoint'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 829.7826614379883,

+        "y": 646.0042333602905,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "e84b540.ad3b8b"

+            ]

+        ]

+    },

+    {

+        "id": "e84b540.ad3b8b",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 991.782585144043,

+        "y": 642.0042562484741,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "6a601537.4b319c"

+            ]

+        ]

+    },

+    {

+        "id": "b2a19a82.68d928",

+        "type": "set",

+        "name": "set role",

+        "xml": "<set>\n<parameter name='prop.site.role' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n\n",

+        "comments": "",

+        "x": 1363.7827529907227,

+        "y": 570.0042057037354,

+        "z": "3ab9f09a.78056",

+        "wires": []

+    },

+    {

+        "id": "f2bf7a.aeab3088",

+        "type": "set",

+        "name": "set controlPoint",

+        "xml": "<set>\n<parameter name='prop.site.controlPoint' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n\n",

+        "comments": "",

+        "x": 1737.7825927734375,

+        "y": 689.0043344497681,

+        "z": "3ab9f09a.78056",

+        "wires": []

+    },

+    {

+        "id": "a54dec2e.97d4",

+        "type": "execute",

+        "name": "execute split roles",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.site.role`'/>\n<parameter name=\"regex\" value=\",\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"prop.site.roles\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1391.448959350586,

+        "y": 619.0040884017944,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9cd4ca73.3ac2d8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1138.4490966796875,

+        "y": 599.0040884017944,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "b2a19a82.68d928",

+                "a54dec2e.97d4"

+            ]

+        ]

+    },

+    {

+        "id": "ba801506.77df48",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1555.4490089416504,

+        "y": 709.0040903091431,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "f2bf7a.aeab3088",

+                "7b2bb6bb.83c9d8"

+            ]

+        ]

+    },

+    {

+        "id": "7b2bb6bb.83c9d8",

+        "type": "execute",

+        "name": "execute split control points",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.site.controlPoint`'/>\n<parameter name=\"regex\" value=\",\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"prop.site.controlpoints\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1762.4490699768066,

+        "y": 741.0041942596436,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "50debd23.9a1de4",

+        "type": "switchNode",

+        "name": "switch latitude",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'latitude'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 830.1155471801758,

+        "y": 344.00399017333984,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "58f650e6.ada6d"

+            ]

+        ]

+    },

+    {

+        "id": "58f650e6.ada6d",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1006.1153945922852,

+        "y": 339.00394916534424,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "536b62b7.33ab7c"

+            ]

+        ]

+    },

+    {

+        "id": "536b62b7.33ab7c",

+        "type": "set",

+        "name": "set location-latitude",

+        "xml": "<set>\n<parameter name='prop.site.location-latitude' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1180.1154022216797,

+        "y": 337.60396575927734,

+        "z": "3ab9f09a.78056",

+        "wires": []

+    },

+    {

+        "id": "4dc3fc8d.6fd204",

+        "type": "switchNode",

+        "name": "switch longitude",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'longitude'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 833.1155471801758,

+        "y": 384.0040330886841,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "f395b1da.86ab9"

+            ]

+        ]

+    },

+    {

+        "id": "f395b1da.86ab9",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1005.1155548095703,

+        "y": 379.004075050354,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "7695df92.1105c"

+            ]

+        ]

+    },

+    {

+        "id": "7695df92.1105c",

+        "type": "set",

+        "name": "set location-longitude",

+        "xml": "<set>\n<parameter name='prop.site.location-longitude' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1187.1154098510742,

+        "y": 382.60392665863037,

+        "z": "3ab9f09a.78056",

+        "wires": []

+    },

+    {

+        "id": "650d8fc0.b6389",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 996.1155548095703,

+        "y": 429.00407791137695,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "8334f7f2.2699d8"

+            ]

+        ]

+    },

+    {

+        "id": "d0f32787.0608d8",

+        "type": "set",

+        "name": "set emails",

+        "xml": "<set>\n<parameter name='prop.site.emails' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1354.115249633789,

+        "y": 397.6039299964905,

+        "z": "3ab9f09a.78056",

+        "wires": []

+    },

+    {

+        "id": "b069280b.7f4bd8",

+        "type": "switchNode",

+        "name": "switch emails",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'emails'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 823.1156234741211,

+        "y": 429.00407791137695,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "650d8fc0.b6389"

+            ]

+        ]

+    },

+    {

+        "id": "cb890556.5aec68",

+        "type": "execute",

+        "name": "execute split emails",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.site.emails`'/>\n<parameter name=\"regex\" value=\",\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"prop.site.email\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1379.781593322754,

+        "y": 444.00383281707764,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "8334f7f2.2699d8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1158.1155624389648,

+        "y": 430.0039954185486,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "d0f32787.0608d8",

+                "cb890556.5aec68"

+            ]

+        ]

+    },

+    {

+        "id": "8406a399.f2e3e",

+        "type": "switchNode",

+        "name": "switch description",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'description'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 836.0039291381836,

+        "y": 133.0039103301242,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "df39a5b0.38ab18"

+            ]

+        ]

+    },

+    {

+        "id": "df39a5b0.38ab18",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 980.00390625,

+        "y": 135.00390625,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "77e9385a.343e78"

+            ]

+        ]

+    },

+    {

+        "id": "77e9385a.343e78",

+        "type": "set",

+        "name": "set description",

+        "xml": "<set>\n<parameter name='prop.site.description' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1126.0039825439453,

+        "y": 135.60393619537354,

+        "z": "3ab9f09a.78056",

+        "wires": []

+    },

+    {

+        "id": "bbcae826.787888",

+        "type": "other",

+        "name": "outcome Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1353.00394821167,

+        "y": 483.00396156311035,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "b7d9fe5a.8e045"

+            ]

+        ]

+    },

+    {

+        "id": "4964090b.461a88",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1336.5042762756348,

+        "y": 531.0039215087891,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "69d26327.61da0c"

+            ]

+        ]

+    },

+    {

+        "id": "1b07ddd4.378392",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 949.8996047973633,

+        "y": 477.97730827331543,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "dc18071d.1bddd8"

+            ]

+        ]

+    },

+    {

+        "id": "dc18071d.1bddd8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1066.0039367675781,

+        "y": 480.00392055511475,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "46e35b04.b2e184"

+            ]

+        ]

+    },

+    {

+        "id": "46e35b04.b2e184",

+        "type": "switchNode",

+        "name": "switch value",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1196.0039405822754,

+        "y": 512.0039196014404,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "bbcae826.787888",

+                "4964090b.461a88"

+            ]

+        ]

+    },

+    {

+        "id": "b7d9fe5a.8e045",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1492.0039520263672,

+        "y": 483.00391960144043,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6a601537.4b319c",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1129.00390625,

+        "y": 655.00390625,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "f5a10a50.3b7ee8"

+            ]

+        ]

+    },

+    {

+        "id": "f5a10a50.3b7ee8",

+        "type": "switchNode",

+        "name": "switch value",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1259.0039100646973,

+        "y": 687.0039052963257,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "9d775805.ce9a18",

+                "603a4c12.7819c4"

+            ]

+        ]

+    },

+    {

+        "id": "9d775805.ce9a18",

+        "type": "other",

+        "name": "outcome Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1416.0039176940918,

+        "y": 658.0039472579956,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "73c6eb1d.a33c74"

+            ]

+        ]

+    },

+    {

+        "id": "603a4c12.7819c4",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1399.5042457580566,

+        "y": 706.0039072036743,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            [

+                "ba801506.77df48"

+            ]

+        ]

+    },

+    {

+        "id": "73c6eb1d.a33c74",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1555.003921508789,

+        "y": 658.0039052963257,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b6ec51e3.02bd9",

+        "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/svclogic2.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"'vf-module-site-params'\"/>\n<parameter name=\"field3\" value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>\n\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 824.0000228881836,

+        "y": 33,

+        "z": "3ab9f09a.78056",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-wan-param.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-wan-param.json
index dbd911b..30ccba9 100644
--- a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-wan-param.json
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-get-wan-param.json
@@ -1,727 +1,859 @@
-[
-  {
-    "id": "439a8dde.a54294",
-    "type": "dgstart",
-    "name": "DGSTART",
-    "outputs": 1,
-    "x": 95,
-    "y": 67,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "885d7f3c.d7635"
-      ]
-    ]
-  },
-  {
-    "id": "885d7f3c.d7635",
-    "type": "service-logic",
-    "name": "GENERIC-RESOURCE-API ${project.version}",
-    "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",
-    "outputs": 1,
-    "x": 307.00000381469727,
-    "y": 139.0000171661377,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "715e2390.5052fc"
-      ]
-    ]
-  },
-  {
-    "id": "715e2390.5052fc",
-    "type": "method",
-    "name": "sdwan-get-wan-param",
-    "xml": "<method rpc='sdwan-get-wan-param' mode='sync'>\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 295.0001220703125,
-    "y": 227,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "9d4aea5e.ef6f48"
-      ]
-    ]
-  },
-  {
-    "id": "9d4aea5e.ef6f48",
-    "type": "block",
-    "name": "block : atomic",
-    "xml": "<block atomic=\"true\">\n",
-    "atomic": "false",
-    "comments": "",
-    "outputs": 1,
-    "x": 302.00001525878906,
-    "y": 313.0000581741333,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "6b944277.796b7c"
-      ]
-    ]
-  },
-  {
-    "id": "6b944277.796b7c",
-    "type": "for",
-    "name": "for each sdwan-get-request-input-param",
-    "xml": "<for index='idx' start='0' end='`$vnf-request-input.vnf-input-parameters.param_length`' >\n\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 338.6667785644531,
-    "y": 395.666654586792,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "37470750.b03bb8"
-      ]
-    ]
-  },
-  {
-    "id": "37470750.b03bb8",
-    "type": "block",
-    "name": "block",
-    "xml": "<block>\n",
-    "atomic": "false",
-    "comments": "",
-    "outputs": 1,
-    "x": 603.5002822875977,
-    "y": 305.00004625320435,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "7ac07f9d.deb5a",
-        "f51dc11b.c63d",
-        "390047c.48de9b8",
-        "19863ae8.c2ed05",
-        "a84af135.691bc",
-        "40a2ce76.5acb8",
-        "743ccae1.1d4ed4",
-        "da2a6768.0f1b08",
-        "937e7e7c.abe2b",
-        "d7a63229.55ffb",
-        "52f8113f.08404",
-        "dd33b364.8ca5b",
-        "edbcab35.7a44e8",
-        "d34e678f.eeed98",
-        "54c67966.b6a9c8"
-      ]
-    ]
-  },
-  {
-    "id": "7ac07f9d.deb5a",
-    "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=\"`$error-message`\" />\n",
-    "comments": "",
-    "x": 837.0006408691406,
-    "y": 671.0003890991211,
-    "z": "1a0d2992.253ae6",
-    "wires": []
-  },
-  {
-    "id": "a84af135.691bc",
-    "type": "switchNode",
-    "name": "switch deviceName",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'deviceName'`\">\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 836.0000877380371,
-    "y": 220.00005626678467,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "e491e463.e045e8"
-      ]
-    ]
-  },
-  {
-    "id": "e491e463.e045e8",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 1038.000494003296,
-    "y": 221.00012683868408,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "946002ca.03b1f"
-      ]
-    ]
-  },
-  {
-    "id": "946002ca.03b1f",
-    "type": "set",
-    "name": "set deviceName",
-    "xml": "<set>\n<parameter name='prop.wan.deviceName' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
-    "comments": "",
-    "x": 1190.0005569458008,
-    "y": 218.60021209716797,
-    "z": "1a0d2992.253ae6",
-    "wires": []
-  },
-  {
-    "id": "d7a63229.55ffb",
-    "type": "switchNode",
-    "name": "switch vlanId",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'vlanId'`\">\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 828.8402290344238,
-    "y": 406.00011920928955,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "d3962f14.7c3b3"
-      ]
-    ]
-  },
-  {
-    "id": "d3962f14.7c3b3",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 1013.8403167724609,
-    "y": 404.0001497268677,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "1b718234.ee52ce"
-      ]
-    ]
-  },
-  {
-    "id": "1b718234.ee52ce",
-    "type": "set",
-    "name": "set vlanId",
-    "xml": "<set>\n<parameter name='prop.wan.vlanId' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
-    "comments": "",
-    "x": 1161.1742248535156,
-    "y": 401.4614086151123,
-    "z": "1a0d2992.253ae6",
-    "wires": []
-  },
-  {
-    "id": "390047c.48de9b8",
-    "type": "switchNode",
-    "name": "switch name",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'name'`\">\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 833.8951606750488,
-    "y": 149.97332763671875,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "eba68f46.eff61"
-      ]
-    ]
-  },
-  {
-    "id": "eba68f46.eff61",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 1021.8952484130859,
-    "y": 150.97335720062256,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "7dfe338e.aacb9c"
-      ]
-    ]
-  },
-  {
-    "id": "7dfe338e.aacb9c",
-    "type": "set",
-    "name": "set name",
-    "xml": "<set>\n<parameter name='prop.wan.name' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
-    "comments": "",
-    "x": 1171.8954982757568,
-    "y": 145.57343292236328,
-    "z": "1a0d2992.253ae6",
-    "wires": []
-  },
-  {
-    "id": "da2a6768.0f1b08",
-    "type": "switchNode",
-    "name": "switch ipAddress",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'ipAddress'`\">\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 832.8954048156738,
-    "y": 332.37682247161865,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "d6f71f04.c7866"
-      ]
-    ]
-  },
-  {
-    "id": "d6f71f04.c7866",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 1026.895652770996,
-    "y": 333.37677097320557,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "65be0cd2.03f094"
-      ]
-    ]
-  },
-  {
-    "id": "65be0cd2.03f094",
-    "type": "set",
-    "name": "set ipAddress",
-    "xml": "<set>\n<parameter name='prop.wan.ipAddress' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
-    "comments": "",
-    "x": 1179.2295608520508,
-    "y": 331.8380317687988,
-    "z": "1a0d2992.253ae6",
-    "wires": []
-  },
-  {
-    "id": "937e7e7c.abe2b",
-    "type": "switchNode",
-    "name": "switch providerIpAddress",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'providerIpAddress'`\">\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 864.895565032959,
-    "y": 367.3767442703247,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "d6c02774.fd7328"
-      ]
-    ]
-  },
-  {
-    "id": "d6c02774.fd7328",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 1040.8958168029785,
-    "y": 367.3766899108887,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "86d16286.a90f7"
-      ]
-    ]
-  },
-  {
-    "id": "86d16286.a90f7",
-    "type": "set",
-    "name": "set providerIpAddress",
-    "xml": "<set>\n<parameter name='prop.wan.providerIpAddress' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
-    "comments": "",
-    "x": 1207.2294006347656,
-    "y": 367.8378715515137,
-    "z": "1a0d2992.253ae6",
-    "wires": []
-  },
-  {
-    "id": "dd33b364.8ca5b",
-    "type": "switchNode",
-    "name": "switch inputBandwidth",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'inputBandwidth'`\">\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 855.8953742980957,
-    "y": 479.3765506744385,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "8c8b118b.1a16e"
-      ]
-    ]
-  },
-  {
-    "id": "8c8b118b.1a16e",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 1032.8955726623535,
-    "y": 478.376615524292,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "52559144.3d725"
-      ]
-    ]
-  },
-  {
-    "id": "52559144.3d725",
-    "type": "set",
-    "name": "set inputBandwidth",
-    "xml": "<set>\n<parameter name='prop.wan.inputBandwidth' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
-    "comments": "",
-    "x": 1240.2293224334717,
-    "y": 472.8377799987793,
-    "z": "1a0d2992.253ae6",
-    "wires": []
-  },
-  {
-    "id": "edbcab35.7a44e8",
-    "type": "switchNode",
-    "name": "switch outputBandwidth",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'outputBandwidth'`\">\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 861.8953742980957,
-    "y": 518.3765506744385,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "9785a401.84f478"
-      ]
-    ]
-  },
-  {
-    "id": "9785a401.84f478",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 1045.8955707550049,
-    "y": 518.3766593933105,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "29877f00.328f52"
-      ]
-    ]
-  },
-  {
-    "id": "29877f00.328f52",
-    "type": "set",
-    "name": "set outputBandwidth",
-    "xml": "<set>\n<parameter name='prop.wan.outputBandwidth' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
-    "comments": "",
-    "x": 1242.2293453216553,
-    "y": 511.8377628326416,
-    "z": "1a0d2992.253ae6",
-    "wires": []
-  },
-  {
-    "id": "19863ae8.c2ed05",
-    "type": "switchNode",
-    "name": "switch description",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'description'`\">\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 840.8953132629395,
-    "y": 183.3767032623291,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "c907441.ebe9bb8"
-      ]
-    ]
-  },
-  {
-    "id": "c907441.ebe9bb8",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 1032.8955574035645,
-    "y": 184.3767328262329,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "1126e041.4a24d"
-      ]
-    ]
-  },
-  {
-    "id": "1126e041.4a24d",
-    "type": "set",
-    "name": "set description",
-    "xml": "<set>\n<parameter name='prop.wan.description' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
-    "comments": "",
-    "x": 1183.2295608520508,
-    "y": 183.8379421234131,
-    "z": "1a0d2992.253ae6",
-    "wires": []
-  },
-  {
-    "id": "743ccae1.1d4ed4",
-    "type": "switchNode",
-    "name": "switch portNumber",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'portNumber'`\">\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 844.228572845459,
-    "y": 291.9943332672119,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "ebcd50b1.0b3d6"
-      ]
-    ]
-  },
-  {
-    "id": "ebcd50b1.0b3d6",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 1035.228744506836,
-    "y": 294.9943628311157,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "a1a449ce.d26a18"
-      ]
-    ]
-  },
-  {
-    "id": "a1a449ce.d26a18",
-    "type": "set",
-    "name": "set portNumber",
-    "xml": "<set>\n<parameter name='prop.wan.portNumber' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
-    "comments": "",
-    "x": 1189.2290725708008,
-    "y": 294.5943775177002,
-    "z": "1a0d2992.253ae6",
-    "wires": []
-  },
-  {
-    "id": "40a2ce76.5acb8",
-    "type": "switchNode",
-    "name": "switch portType",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'portType'`\">\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 834.1236763000488,
-    "y": 255.96763801574707,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "6ea5c966.7c8868"
-      ]
-    ]
-  },
-  {
-    "id": "6ea5c966.7c8868",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 1029.123764038086,
-    "y": 255.96766757965088,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "f40a6475.4548d8"
-      ]
-    ]
-  },
-  {
-    "id": "f40a6475.4548d8",
-    "type": "set",
-    "name": "set portType",
-    "xml": "<set>\n<parameter name='prop.wan.portType' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
-    "comments": "",
-    "x": 1176.1240921020508,
-    "y": 256.56768226623535,
-    "z": "1a0d2992.253ae6",
-    "wires": []
-  },
-  {
-    "id": "90cd2791.ea5778",
-    "type": "set",
-    "name": "set transportnetworkName",
-    "xml": "<set>\n<parameter name='prop.wan.transportNetworkName' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
-    "comments": "",
-    "x": 1288.9998302459717,
-    "y": 437.38701152801514,
-    "z": "1a0d2992.253ae6",
-    "wires": []
-  },
-  {
-    "id": "c9247859.1c5528",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 1077.6659240722656,
-    "y": 438.92592906951904,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "90cd2791.ea5778"
-      ]
-    ]
-  },
-  {
-    "id": "52f8113f.08404",
-    "type": "switchNode",
-    "name": "switch transportnetworkName",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'transportNetworkName'`\">\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 878.6657485961914,
-    "y": 442.9256591796875,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "c9247859.1c5528"
-      ]
-    ]
-  },
-  {
-    "id": "f51dc11b.c63d",
-    "type": "switchNode",
-    "name": "switch id",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'id'`\">\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 825.999340057373,
-    "y": 117.38670539855957,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "ebf6555a.abbb88"
-      ]
-    ]
-  },
-  {
-    "id": "ebf6555a.abbb88",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 1026.9994812011719,
-    "y": 115.3867359161377,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "1a802dda.2caca2"
-      ]
-    ]
-  },
-  {
-    "id": "1a802dda.2caca2",
-    "type": "set",
-    "name": "set id",
-    "xml": "<set>\n<parameter name='prop.wan.id' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
-    "comments": "",
-    "x": 1168.999828338623,
-    "y": 110.98684310913086,
-    "z": "1a0d2992.253ae6",
-    "wires": []
-  },
-  {
-    "id": "d34e678f.eeed98",
-    "type": "switchNode",
-    "name": "switch devicePortId",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'devicePortId'`\">\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 847.0000610351562,
-    "y": 563.0000381469727,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "67b4d68f.872058"
-      ]
-    ]
-  },
-  {
-    "id": "67b4d68f.872058",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 1046.0002269744873,
-    "y": 557.000114440918,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "8e605ff5.22a2d"
-      ]
-    ]
-  },
-  {
-    "id": "8e605ff5.22a2d",
-    "type": "set",
-    "name": "set devicePortId",
-    "xml": "<set>\n<parameter name='prop.wan.devicePortId' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
-    "comments": "",
-    "x": 1245.3339710235596,
-    "y": 556.4612121582031,
-    "z": "1a0d2992.253ae6",
-    "wires": []
-  },
-  {
-    "id": "54c67966.b6a9c8",
-    "type": "switchNode",
-    "name": "switch wanPortId",
-    "xml": "<switch test=\"`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'wanPortId'`\">\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 837.0000610351562,
-    "y": 599.0000400543213,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "cda45636.504778"
-      ]
-    ]
-  },
-  {
-    "id": "cda45636.504778",
-    "type": "outcomeTrue",
-    "name": "true",
-    "xml": "<outcome value='true'>\n",
-    "comments": "",
-    "outputs": 1,
-    "x": 1048.0002250671387,
-    "y": 592.0001173019409,
-    "z": "1a0d2992.253ae6",
-    "wires": [
-      [
-        "651ea7f2.7fd2a8"
-      ]
-    ]
-  },
-  {
-    "id": "651ea7f2.7fd2a8",
-    "type": "set",
-    "name": "set wanPortId",
-    "xml": "<set>\n<parameter name='prop.wan.wanPortId' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />\n",
-    "comments": "",
-    "x": 1245.3339710235596,
-    "y": 596.4612121582031,
-    "z": "1a0d2992.253ae6",
-    "wires": []
-  }
-]
+[

+    {

+        "id": "818160d.1a87aa",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 116.01041412353516,

+        "y": 49.010414123535156,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "2c87f750.9ff0e8"

+            ]

+        ]

+    },

+    {

+        "id": "2c87f750.9ff0e8",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 253.01041793823242,

+        "y": 154.0104274749756,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "ff163fb7.14832"

+            ]

+        ]

+    },

+    {

+        "id": "ff163fb7.14832",

+        "type": "method",

+        "name": "sdwan-get-wan-param",

+        "xml": "<method rpc='sdwan-get-wan-param' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 241.01053619384766,

+        "y": 242.0104103088379,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "352c95ce.453cea"

+            ]

+        ]

+    },

+    {

+        "id": "352c95ce.453cea",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 248.01042938232422,

+        "y": 328.0104684829712,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "52293f30.d5b77"

+            ]

+        ]

+    },

+    {

+        "id": "52293f30.d5b77",

+        "type": "for",

+        "name": "for each sdwan-get-request-input-param",

+        "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 284.6771926879883,

+        "y": 410.6770648956299,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "e8d20d4.02e64f"

+            ]

+        ]

+    },

+    {

+        "id": "e8d20d4.02e64f",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 549.5106964111328,

+        "y": 320.01045656204224,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "2847b0ea.9ebb",

+                "d4feaef6.6438f",

+                "3e47338e.c3ab3c",

+                "91d20588.adacd8",

+                "43f318cb.2f4418",

+                "49351eca.09882",

+                "a41eaf2.439f75",

+                "9005e8e9.34f768",

+                "a55d2183.cf6a",

+                "c8c85e46.4f10f",

+                "286e48cc.e48988",

+                "383fea5a.143066",

+                "18a75045.9bb5e",

+                "60fcaabc.ca5bf4",

+                "d17b4c90.52ccd",

+                "2a13a6a0.eb644a",

+                "19ce9dfd.f8a2f2",

+                "a399cdca.37b7a"

+            ]

+        ]

+    },

+    {

+        "id": "2847b0ea.9ebb",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 781.0111198425293,

+        "y": 804.0109233856201,

+        "z": "83799888.3d8488",

+        "wires": []

+    },

+    {

+        "id": "43f318cb.2f4418",

+        "type": "switchNode",

+        "name": "switch deviceName",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'deviceName'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 782.0105018615723,

+        "y": 235.01046657562256,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "510fde76.25775"

+            ]

+        ]

+    },

+    {

+        "id": "510fde76.25775",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 984.010908126831,

+        "y": 236.01053714752197,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "bacc1950.a6e0e8"

+            ]

+        ]

+    },

+    {

+        "id": "bacc1950.a6e0e8",

+        "type": "set",

+        "name": "set deviceName",

+        "xml": "<set>\n<parameter name='prop.wan.deviceName' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />",

+        "comments": "",

+        "x": 1148.0111656188965,

+        "y": 232.6106538772583,

+        "z": "83799888.3d8488",

+        "wires": []

+    },

+    {

+        "id": "c8c85e46.4f10f",

+        "type": "switchNode",

+        "name": "switch vlanId",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'vlanId'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 763.8506278991699,

+        "y": 465.01052474975586,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "5ea3c659.f0cd28"

+            ]

+        ]

+    },

+    {

+        "id": "5ea3c659.f0cd28",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 948.850715637207,

+        "y": 463.010555267334,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "a7e47063.77624"

+            ]

+        ]

+    },

+    {

+        "id": "a7e47063.77624",

+        "type": "set",

+        "name": "set vlanId",

+        "xml": "<set>\n<parameter name='prop.wan.vlanId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />",

+        "comments": "",

+        "x": 1096.1846237182617,

+        "y": 460.4718141555786,

+        "z": "83799888.3d8488",

+        "wires": []

+    },

+    {

+        "id": "3e47338e.c3ab3c",

+        "type": "switchNode",

+        "name": "switch name",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 779.905574798584,

+        "y": 164.98373794555664,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "69feffe1.51e2a"

+            ]

+        ]

+    },

+    {

+        "id": "69feffe1.51e2a",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 967.9056625366211,

+        "y": 165.98376750946045,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "8d991bb4.b45f18"

+            ]

+        ]

+    },

+    {

+        "id": "8d991bb4.b45f18",

+        "type": "set",

+        "name": "set name",

+        "xml": "<set>\n<parameter name='prop.wan.name' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1117.905912399292,

+        "y": 160.58384323120117,

+        "z": "83799888.3d8488",

+        "wires": []

+    },

+    {

+        "id": "9005e8e9.34f768",

+        "type": "switchNode",

+        "name": "switch ipAddress",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'ipAddress'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 767.9058036804199,

+        "y": 391.38722801208496,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "cf4b6fa5.dfd8b"

+            ]

+        ]

+    },

+    {

+        "id": "cf4b6fa5.dfd8b",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 961.9060516357422,

+        "y": 392.3871765136719,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "abac1fea.19c24"

+            ]

+        ]

+    },

+    {

+        "id": "abac1fea.19c24",

+        "type": "set",

+        "name": "set ipAddress",

+        "xml": "<set>\n<parameter name='prop.wan.ipAddress' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1114.2399597167969,

+        "y": 390.84843730926514,

+        "z": "83799888.3d8488",

+        "wires": []

+    },

+    {

+        "id": "a55d2183.cf6a",

+        "type": "switchNode",

+        "name": "switch providerIpAddress",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'providerIpAddress'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 799.9059638977051,

+        "y": 426.387149810791,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "b70a8774.407208"

+            ]

+        ]

+    },

+    {

+        "id": "b70a8774.407208",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 975.9062156677246,

+        "y": 426.387095451355,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "a3935f63.e64dc"

+            ]

+        ]

+    },

+    {

+        "id": "a3935f63.e64dc",

+        "type": "set",

+        "name": "set providerIpAddress",

+        "xml": "<set>\n<parameter name='prop.wan.providerIpAddress' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />",

+        "comments": "",

+        "x": 1142.2397994995117,

+        "y": 426.84827709198,

+        "z": "83799888.3d8488",

+        "wires": []

+    },

+    {

+        "id": "383fea5a.143066",

+        "type": "switchNode",

+        "name": "switch inputBandwidth",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'inputBandwidth'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 790.9057731628418,

+        "y": 538.3869562149048,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "45b075bc.f36a3c"

+            ]

+        ]

+    },

+    {

+        "id": "45b075bc.f36a3c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 967.9059715270996,

+        "y": 537.3870210647583,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "7f4d1606.062148"

+            ]

+        ]

+    },

+    {

+        "id": "7f4d1606.062148",

+        "type": "set",

+        "name": "set inputBandwidth",

+        "xml": "<set>\n<parameter name='prop.wan.inputBandwidth' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />",

+        "comments": "",

+        "x": 1175.2397212982178,

+        "y": 531.8481855392456,

+        "z": "83799888.3d8488",

+        "wires": []

+    },

+    {

+        "id": "18a75045.9bb5e",

+        "type": "switchNode",

+        "name": "switch outputBandwidth",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'outputBandwidth'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 796.9057731628418,

+        "y": 577.3869562149048,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "2be3aa98.e7daa6"

+            ]

+        ]

+    },

+    {

+        "id": "2be3aa98.e7daa6",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 980.905969619751,

+        "y": 577.3870649337769,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "7e2e3a9b.578594"

+            ]

+        ]

+    },

+    {

+        "id": "7e2e3a9b.578594",

+        "type": "set",

+        "name": "set outputBandwidth",

+        "xml": "<set>\n<parameter name='prop.wan.outputBandwidth' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />",

+        "comments": "",

+        "x": 1177.2397441864014,

+        "y": 570.8481683731079,

+        "z": "83799888.3d8488",

+        "wires": []

+    },

+    {

+        "id": "91d20588.adacd8",

+        "type": "switchNode",

+        "name": "switch description",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name  == 'description'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 786.9057273864746,

+        "y": 198.387113571167,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "8acddcca.d85a2"

+            ]

+        ]

+    },

+    {

+        "id": "8acddcca.d85a2",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 978.9059715270996,

+        "y": 199.3871431350708,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "f82affc6.722b5"

+            ]

+        ]

+    },

+    {

+        "id": "f82affc6.722b5",

+        "type": "set",

+        "name": "set description",

+        "xml": "<set>\n<parameter name='prop.wan.description' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1129.239974975586,

+        "y": 198.84835243225098,

+        "z": "83799888.3d8488",

+        "wires": []

+    },

+    {

+        "id": "a41eaf2.439f75",

+        "type": "switchNode",

+        "name": "switch portNumber",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'portNumber'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 779.2389717102051,

+        "y": 351.0047388076782,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "9190cac8.65bcb8"

+            ]

+        ]

+    },

+    {

+        "id": "9190cac8.65bcb8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 970.239143371582,

+        "y": 354.00476837158203,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "bc0c9c4f.ffd6c"

+            ]

+        ]

+    },

+    {

+        "id": "bc0c9c4f.ffd6c",

+        "type": "set",

+        "name": "set portNumber",

+        "xml": "<set>\n<parameter name='prop.wan.portNumber' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1124.2394714355469,

+        "y": 353.6047830581665,

+        "z": "83799888.3d8488",

+        "wires": []

+    },

+    {

+        "id": "49351eca.09882",

+        "type": "switchNode",

+        "name": "switch portType",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'portType'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 780.134090423584,

+        "y": 270.97804832458496,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "9c7436d2.ff2978"

+            ]

+        ]

+    },

+    {

+        "id": "9c7436d2.ff2978",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 975.1341781616211,

+        "y": 270.97807788848877,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "45817322.3ae1fc"

+            ]

+        ]

+    },

+    {

+        "id": "45817322.3ae1fc",

+        "type": "set",

+        "name": "set portType",

+        "xml": "<set>\n<parameter name='prop.wan.portType' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1122.134506225586,

+        "y": 271.57809257507324,

+        "z": "83799888.3d8488",

+        "wires": []

+    },

+    {

+        "id": "c9e43e20.584a3",

+        "type": "set",

+        "name": "set transportnetworkName",

+        "xml": "<set>\n<parameter name='prop.wan.transportNetworkName' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />",

+        "comments": "",

+        "x": 1224.0102291107178,

+        "y": 496.39741706848145,

+        "z": "83799888.3d8488",

+        "wires": []

+    },

+    {

+        "id": "878c2a18.4ab5f8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1012.6763229370117,

+        "y": 497.93633460998535,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "c9e43e20.584a3"

+            ]

+        ]

+    },

+    {

+        "id": "286e48cc.e48988",

+        "type": "switchNode",

+        "name": "switch transportnetworkName",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'transportNetworkName'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 813.6761474609375,

+        "y": 501.9360647201538,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "878c2a18.4ab5f8"

+            ]

+        ]

+    },

+    {

+        "id": "d4feaef6.6438f",

+        "type": "switchNode",

+        "name": "switch id",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name  == 'id'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 772.0097541809082,

+        "y": 132.39711570739746,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "c4e97c71.2edee"

+            ]

+        ]

+    },

+    {

+        "id": "c4e97c71.2edee",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 973.009895324707,

+        "y": 130.3971462249756,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "fa0065d4.357e68"

+            ]

+        ]

+    },

+    {

+        "id": "fa0065d4.357e68",

+        "type": "set",

+        "name": "set id",

+        "xml": "<set>\n<parameter name='prop.wan.id' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1115.0102424621582,

+        "y": 125.99725341796875,

+        "z": "83799888.3d8488",

+        "wires": []

+    },

+    {

+        "id": "60fcaabc.ca5bf4",

+        "type": "switchNode",

+        "name": "switch devicePortId",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'devicePortId'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 782.0104598999023,

+        "y": 622.010443687439,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "642147fe.576a98"

+            ]

+        ]

+    },

+    {

+        "id": "642147fe.576a98",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 981.0106258392334,

+        "y": 616.0105199813843,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "fd4863f3.2dd12"

+            ]

+        ]

+    },

+    {

+        "id": "fd4863f3.2dd12",

+        "type": "set",

+        "name": "set devicePortId",

+        "xml": "<set>\n<parameter name='prop.wan.devicePortId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />",

+        "comments": "",

+        "x": 1180.3443698883057,

+        "y": 615.4716176986694,

+        "z": "83799888.3d8488",

+        "wires": []

+    },

+    {

+        "id": "d17b4c90.52ccd",

+        "type": "switchNode",

+        "name": "switch wanPortId",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'wanPortId'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 772.0104598999023,

+        "y": 658.0104455947876,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "f3f82bbf.a22db8"

+            ]

+        ]

+    },

+    {

+        "id": "f3f82bbf.a22db8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 983.0106239318848,

+        "y": 651.0105228424072,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "9cec917d.42e1c"

+            ]

+        ]

+    },

+    {

+        "id": "9cec917d.42e1c",

+        "type": "set",

+        "name": "set wanPortId",

+        "xml": "<set>\n<parameter name='prop.wan.wanPortId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />",

+        "comments": "",

+        "x": 1180.3443698883057,

+        "y": 655.4716176986694,

+        "z": "83799888.3d8488",

+        "wires": []

+    },

+    {

+        "id": "e6f5b113.db834",

+        "type": "set",

+        "name": "set apn",

+        "xml": "<set>\n<parameter name='prop.wan.apn-name' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1121.0000076293945,

+        "y": 310.01041412353516,

+        "z": "83799888.3d8488",

+        "wires": []

+    },

+    {

+        "id": "2a13a6a0.eb644a",

+        "type": "switchNode",

+        "name": "switch apn",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'apn'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 770.0000076293945,

+        "y": 309.01041412353516,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "cd547003.96af2"

+            ]

+        ]

+    },

+    {

+        "id": "cd547003.96af2",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 965.0000953674316,

+        "y": 309.01044368743896,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "e6f5b113.db834"

+            ]

+        ]

+    },

+    {

+        "id": "19ce9dfd.f8a2f2",

+        "type": "switchNode",

+        "name": "switch publicIP",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'publicIP'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 768.0000305175781,

+        "y": 701.0104351043701,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "fadc805c.91335"

+            ]

+        ]

+    },

+    {

+        "id": "fadc805c.91335",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 977.0002021789551,

+        "y": 696.010516166687,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "bda8c6bd.b7ac88"

+            ]

+        ]

+    },

+    {

+        "id": "bda8c6bd.b7ac88",

+        "type": "set",

+        "name": "set publicIP",

+        "xml": "<set>\n<parameter name='prop.wan.publicIP' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />",

+        "comments": "",

+        "x": 1182.3338661193848,

+        "y": 694.4716167449951,

+        "z": "83799888.3d8488",

+        "wires": []

+    },

+    {

+        "id": "a399cdca.37b7a",

+        "type": "switchNode",

+        "name": "switch IPMode",

+        "xml": "<switch test=\"`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'IPMode'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 778.0000305175781,

+        "y": 742.0104360580444,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "728b6eda.0249c"

+            ]

+        ]

+    },

+    {

+        "id": "728b6eda.0249c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 977.0002822875977,

+        "y": 741.0105991363525,

+        "z": "83799888.3d8488",

+        "wires": [

+            [

+                "43404525.61dcfc"

+            ]

+        ]

+    },

+    {

+        "id": "43404525.61dcfc",

+        "type": "set",

+        "name": "set IPMode",

+        "xml": "<set>\n<parameter name='prop.wan.IPMode' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />",

+        "comments": "",

+        "x": 1188.3339176177979,

+        "y": 739.471586227417,

+        "z": "83799888.3d8488",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-activate.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-activate.json
new file mode 100644
index 0000000..d02748c
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-activate.json
@@ -0,0 +1,1123 @@
+[

+    {

+        "id": "66d617ca.7974e8",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 166.00390625,

+        "y": 42.000000953674316,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "ec960184.8c747"

+            ]

+        ]

+    },

+    {

+        "id": "ec960184.8c747",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 245.28961181640625,

+        "y": 104.23811054229736,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "b566667e.9703e8"

+            ]

+        ]

+    },

+    {

+        "id": "b566667e.9703e8",

+        "type": "method",

+        "name": "method sdwan-vf-operation-device-activate",

+        "xml": "<method rpc='sdwan-vf-operation-device-activate' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 257.00390625,

+        "y": 198.58634281158447,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "48de3c23.140fd4"

+            ]

+        ]

+    },

+    {

+        "id": "48de3c23.140fd4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 243.6705780029297,

+        "y": 383.6667146682739,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "9b8b15e3.9d27d8",

+                "22c945bf.bff90a",

+                "7a7ac9c1.d1c088",

+                "3bb5998d.d31786",

+                "6b9873c1.ed3cac",

+                "496cf1c2.09334",

+                "ab75124f.85f25",

+                "b9df134a.f3234",

+                "ad243b23.84cc68",

+                "d63a100a.4fb85",

+                "fba80bcb.537e38",

+                "45830f23.d0369",

+                "d2ac70a8.01bbc",

+                "104a605b.c517a",

+                "2b5c22d1.d99c1e",

+                "673290e1.c0902",

+                "4d09bded.34c944",

+                "d9f0bb67.a6d688"

+            ]

+        ]

+    },

+    {

+        "id": "22c945bf.bff90a",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 589.035270690918,

+        "y": 278.2691421508789,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "936d4e00.f8f0f"

+            ]

+        ]

+    },

+    {

+        "id": "9b8b15e3.9d27d8",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 594.0039253234863,

+        "y": 217.0000114440918,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "e59760b9.c5416"

+            ]

+        ]

+    },

+    {

+        "id": "e59760b9.c5416",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 774.00390625,

+        "y": 216.00000095367432,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "76bc4811.c948a8"

+            ]

+        ]

+    },

+    {

+        "id": "76bc4811.c948a8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 923.4326324462891,

+        "y": 217.14291858673096,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    },

+    {

+        "id": "936d4e00.f8f0f",

+        "type": "switchNode",

+        "name": "switch this vnf-id == input vnf-id",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\">    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 812.0039215087891,

+        "y": 279.0000071525574,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "70d6072a.9e11d8"

+            ]

+        ]

+    },

+    {

+        "id": "70d6072a.9e11d8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1027.00390625,

+        "y": 277.0000009536743,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "ea0a9e13.79435"

+            ]

+        ]

+    },

+    {

+        "id": "ea0a9e13.79435",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1191.00390625,

+        "y": 272.0000009536743,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    },

+    {

+        "id": "7a7ac9c1.d1c088",

+        "type": "switchNode",

+        "name": "switch vf-modules.vf-module_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 639.0039138793945,

+        "y": 349.99999141693115,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "f88f2a92.99e738",

+                "cbbc80b7.cd82",

+                "d281c228.3bb21"

+            ]

+        ]

+    },

+    {

+        "id": "cbbc80b7.cd82",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 861.00390625,

+        "y": 384.0000009536743,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "3e09921b.36399e"

+            ]

+        ]

+    },

+    {

+        "id": "f88f2a92.99e738",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 866.0039024353027,

+        "y": 331,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "3e09921b.36399e"

+            ]

+        ]

+    },

+    {

+        "id": "3e09921b.36399e",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 1024.00390625,

+        "y": 344.0000009536743,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    },

+    {

+        "id": "d281c228.3bb21",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 861.00390625,

+        "y": 445.0000009536743,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "8e3c57a1.dadbf8"

+            ]

+        ]

+    },

+    {

+        "id": "8c0936c1.7617c8",

+        "type": "set",

+        "name": "set vf-module_length",

+        "xml": "<set>\n<parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n",

+        "comments": "",

+        "x": 1215.003921508789,

+        "y": 443.0000149011612,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    },

+    {

+        "id": "8e3c57a1.dadbf8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1022.0039520263672,

+        "y": 441.99999237060547,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "8c0936c1.7617c8",

+                "28692055.9016f",

+                "a8eb8c24.f4a0f"

+            ]

+        ]

+    },

+    {

+        "id": "28692055.9016f",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1234.003890991211,

+        "y": 495.99999141693115,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "73f639ab.d244b8"

+            ]

+        ]

+    },

+    {

+        "id": "73f639ab.d244b8",

+        "type": "switchNode",

+        "name": "switch vf-module-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1477.00390625,

+        "y": 491.0000009536743,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "fdba254c.4c6898"

+            ]

+        ]

+    },

+    {

+        "id": "fdba254c.4c6898",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1675.0039348602295,

+        "y": 478.00000762939453,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "e324ecda.ee495"

+            ]

+        ]

+    },

+    {

+        "id": "e324ecda.ee495",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1827.00390625,

+        "y": 480.0000009536743,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "a7ad0572.bfda18",

+                "1d9eaeb3.112c31",

+                "96aaf259.9b5e1"

+            ]

+        ]

+    },

+    {

+        "id": "a7ad0572.bfda18",

+        "type": "set",

+        "name": "set tmp.vidx and ctx.vf-module-data",

+        "xml": "<set>\n<parameter name='tmp.vidx' value='`$idx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />\n",

+        "comments": "",

+        "x": 2076.004005432129,

+        "y": 474.0000033378601,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    },

+    {

+        "id": "1d9eaeb3.112c31",

+        "type": "set",

+        "name": "set vf-module-request-input.",

+        "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />\n\n",

+        "comments": "",

+        "x": 2065.004005432129,

+        "y": 525.000036239624,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    },

+    {

+        "id": "96aaf259.9b5e1",

+        "type": "call",

+        "name": "call sdwan-get-vf-module-device-param",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-device-param' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2096.0042114257812,

+        "y": 572.0000371932983,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6b9873c1.ed3cac",

+        "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/svclogic.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"Provided alloted resource length\"/>\n<parameter name=\"field3\" value=\"'parameters length'\"/>\n<parameter name=\"field4\" value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`'/>\n\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 554.0039806365967,

+        "y": 576.0000066757202,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "3bb5998d.d31786",

+        "type": "switchNode",

+        "name": "switch tmp.vidx ",

+        "xml": "<switch test=\"`$tmp.vidx`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 578.0351257324219,

+        "y": 523.016074180603,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "68156871.093ed8"

+            ]

+        ]

+    },

+    {

+        "id": "68156871.093ed8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 725.4637680053711,

+        "y": 522.5874843597412,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "749cf44f.03bbfc"

+            ]

+        ]

+    },

+    {

+        "id": "749cf44f.03bbfc",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 874.8924942016602,

+        "y": 523.7304019927979,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    },

+    {

+        "id": "b9df134a.f3234",

+        "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%/generic-resource-api-dg.properties' />\n    <parameter name='contextPrefix' value='prop' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 585.0351448059082,

+        "y": 625.0160593986511,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "fa016c6e.8bda5",

+        "type": "comment",

+        "name": "make sure this VNF doesn't exist already",

+        "info": "",

+        "comments": "",

+        "x": 1307.4205932617188,

+        "y": 1212.2502059936523,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    },

+    {

+        "id": "2b5c22d1.d99c1e",

+        "type": "execute",

+        "name": "execute RestApiCallNode Create Devcie Instance",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-device.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v3/devices'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"deviceResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 673.0080718994141,

+        "y": 1216.424148797989,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "9ca787d1.dfba38",

+                "a187483b.9fc538"

+            ]

+        ]

+    },

+    {

+        "id": "69b97572.5eed5c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1074.6745147705078,

+        "y": 1186.3128004074097,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d59ec52f.21c8f8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Activate Device rest api\" />\n",

+        "comments": "",

+        "x": 1076.1190948486328,

+        "y": 1236.868332862854,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    },

+    {

+        "id": "a187483b.9fc538",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 923.1189384460449,

+        "y": 1239.8682870864868,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "d59ec52f.21c8f8"

+            ]

+        ]

+    },

+    {

+        "id": "9ca787d1.dfba38",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 922.5634536743164,

+        "y": 1183.5349988937378,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "69b97572.5eed5c"

+            ]

+        ]

+    },

+    {

+        "id": "104a605b.c517a",

+        "type": "call",

+        "name": "call sdwan-get-tenant-auth",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 590.0001373291016,

+        "y": 1160.5913829803467,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ab75124f.85f25",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 552.0041103363037,

+        "y": 1641.5002851486206,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    },

+    {

+        "id": "496cf1c2.09334",

+        "type": "set",

+        "name": "copy input data to service data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n",

+        "comments": "",

+        "x": 597.3373680114746,

+        "y": 1531.8336429595947,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    },

+    {

+        "id": "5763663a.274778",

+        "type": "save",

+        "name": "update deviceInstance configuration in AAI",

+        "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' \n      key='device.device-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >\n<parameter name='device-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<!--parameter name='device-id' value='`$deviceResp.success[0].id`' /-->\n<parameter name='operational-status' value='Active' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 632.6708755493164,

+        "y": 1584.722743988037,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "fba80bcb.537e38",

+        "type": "set",

+        "name": "set deviceId to service data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value=\"deviceId\" />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$deviceResp.success[0].id`' />\n",

+        "comments": "",

+        "x": 593.6709938049316,

+        "y": 1315.7538223266602,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    },

+    {

+        "id": "ad243b23.84cc68",

+        "type": "set",

+        "name": "set vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",

+        "comments": "",

+        "x": 576.0041046142578,

+        "y": 1474.2504119873047,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    },

+    {

+        "id": "d9f0bb67.a6d688",

+        "type": "get-resource",

+        "name": "get-resource esr-thirdparty-sdnc",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = 'SDWANController' AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 620.0086822509766,

+        "y": 725.8936567306519,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "24c130a1.06544",

+                "1c6d2fc3.9d47f",

+                "d711f941.efb278"

+            ]

+        ]

+    },

+    {

+        "id": "24c130a1.06544",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 865.008659362793,

+        "y": 668.8936103284359,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "e6538e05.e2e95"

+            ]

+        ]

+    },

+    {

+        "id": "1c6d2fc3.9d47f",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 868.499626159668,

+        "y": 716.4676459729671,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "8c8ed57c.0ce668"

+            ]

+        ]

+    },

+    {

+        "id": "d711f941.efb278",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 863.832633972168,

+        "y": 757.8009589612484,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "37c7dcba.fd9d34"

+            ]

+        ]

+    },

+    {

+        "id": "e6538e05.e2e95",

+        "type": "set",

+        "name": "set controller data",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",

+        "comments": "",

+        "x": 1062.5087203979492,

+        "y": 656.8936103284359,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    },

+    {

+        "id": "8c8ed57c.0ce668",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",

+        "comments": "",

+        "x": 1045.0710372924805,

+        "y": 704.7533820569515,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    },

+    {

+        "id": "37c7dcba.fd9d34",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",

+        "comments": "",

+        "x": 1051.6051902770996,

+        "y": 753.24015173316,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    },

+    {

+        "id": "4d09bded.34c944",

+        "type": "execute",

+        "name": "execute RestApiCallNode Get token",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 628.008659362793,

+        "y": 833.893609046936,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "68b0f825.949708",

+                "3ec68637.c0dbea"

+            ]

+        ]

+    },

+    {

+        "id": "68b0f825.949708",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 867.008731842041,

+        "y": 811.8936405181885,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "ea7ef978.26d9b8"

+            ]

+        ]

+    },

+    {

+        "id": "3ec68637.c0dbea",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 859.258731842041,

+        "y": 865.5365238189697,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "6b38fd7f.9697a4"

+            ]

+        ]

+    },

+    {

+        "id": "ea7ef978.26d9b8",

+        "type": "set",

+        "name": "set token-id",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",

+        "comments": "",

+        "x": 1017.008659362793,

+        "y": 812.893609046936,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    },

+    {

+        "id": "6b38fd7f.9697a4",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing get token rest api\" />\n",

+        "comments": "",

+        "x": 1012.008731842041,

+        "y": 865.286584854126,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    },

+    {

+        "id": "d2ac70a8.01bbc",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 549.7587051391602,

+        "y": 1079.8937320709229,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "c50d0af9.6eaaa8"

+            ]

+        ]

+    },

+    {

+        "id": "c50d0af9.6eaaa8",

+        "type": "execute",

+        "name": "execute RestApiCallNode Create network orchestration",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-network-orchestration.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/network-orchestration-resources'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"orchestration-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 868.2587966918945,

+        "y": 1082.8938932418823,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "673290e1.c0902",

+        "type": "get-resource",

+        "name": "get-resource service-subscription",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"service-subscription\" \n        key= 'service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.subscription-service-type \n        AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.global-customer-id'\n      force=\"true\" pfx=\"tmp.AnAI-data\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 604.0802001953125,

+        "y": 984.5722246170044,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "3dede820.fe1e48",

+                "221b4119.4d74ce"

+            ]

+        ]

+    },

+    {

+        "id": "a417e40c.ac4638",

+        "type": "switchNode",

+        "name": "switch temp-ub-sub-account-id",

+        "xml": "<switch test='`$tmp.AnAI-data.temp-ub-sub-account-id`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1016.0802917480469,

+        "y": 949.3223056793213,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "d1aef225.461ff",

+                "30bdca8a.d90ec6"

+            ]

+        ]

+    },

+    {

+        "id": "d1aef225.461ff",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1208.794750213623,

+        "y": 923.322338104248,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "b031c826.3fa048"

+            ]

+        ]

+    },

+    {

+        "id": "30bdca8a.d90ec6",

+        "type": "other",

+        "name": "Other",

+        "xml": "<outcome value='Other'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1209.080307006836,

+        "y": 978.3223094940186,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "85a88d68.7da4e"

+            ]

+        ]

+    },

+    {

+        "id": "927bbae7.3f69d8",

+        "type": "set",

+        "name": "set prop.tenant-id",

+        "xml": "<set>\n<parameter name='prop.tenant-id' value='`$tmp.AnAI-data.temp-ub-sub-account-id`' />\n",

+        "comments": "",

+        "x": 1456.5088996887207,

+        "y": 1063.4651098251343,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    },

+    {

+        "id": "b031c826.3fa048",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1348.2586479187012,

+        "y": 923.6436066627502,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "e230776c.5a9d58",

+                "3aed4c7a.4aaa14",

+                "be32cece.2100a",

+                "e41ff38c.c7009",

+                "93c1362e.aa2c78",

+                "a9cddfc0.c31fc",

+                "7328f02d.f9128"

+            ]

+        ]

+    },

+    {

+        "id": "e41ff38c.c7009",

+        "type": "set",

+        "name": "set prop.customer-id",

+        "xml": "<set>\n<parameter name='prop.customer-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.global-customer-id`' />\n",

+        "comments": "",

+        "x": 1559.901756286621,

+        "y": 734.2151670455933,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    },

+    {

+        "id": "e230776c.5a9d58",

+        "type": "execute",

+        "name": "execute RestApiCallNode Create tenant",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-tenant.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v2/baseservice/tenants'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"tenant-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1618.9015731811523,

+        "y": 864.7864580154419,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "3aed4c7a.4aaa14",

+        "type": "set",

+        "name": "set prop.tenant-id",

+        "xml": "<set>\n<parameter name='prop.tenant-id' value='`$tenant-result.data.tenantId`' />\n",

+        "comments": "",

+        "x": 1561.7588653564453,

+        "y": 962.6436986923218,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    },

+    {

+        "id": "be32cece.2100a",

+        "type": "execute",

+        "name": "execute RestApiCallNode Create tenant auth",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v2/baseservice/tenants/authorization/' + $prop.tenant-id`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"tenant-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1637.2588348388672,

+        "y": 1013.3937277793884,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "93c1362e.aa2c78",

+        "type": "get-resource",

+        "name": "update-resource customer-id in service-subscription",

+        "xml": "<update plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"service-subscription\" \n        key= 'service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.subscription-service-type \n        AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.global-customer-id'>\n<parameter name='temp-ub-sub-account-id' value='`$tenant-result.data.tenantId`' />\n<!--parameter name='temp-ub-sub-account-id' value='`$prop.customer-id`' /-->\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1660.1873016357422,

+        "y": 915.7865858078003,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "3dede820.fe1e48",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 814.5800628662109,

+        "y": 957.3182830810547,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "a417e40c.ac4638"

+            ]

+        ]

+    },

+    {

+        "id": "221b4119.4d74ce",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 808.2586517333984,

+        "y": 1009.5325946807861,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "13b27219.75f72e"

+            ]

+        ]

+    },

+    {

+        "id": "13b27219.75f72e",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing get token rest api\" />\n",

+        "comments": "",

+        "x": 961.0086517333984,

+        "y": 1009.2826557159424,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    },

+    {

+        "id": "85a88d68.7da4e",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1267.7310638427734,

+        "y": 1061.4693012237549,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            [

+                "927bbae7.3f69d8",

+                "cc5300b4.c716d"

+            ]

+        ]

+    },

+    {

+        "id": "cc5300b4.c716d",

+        "type": "execute",

+        "name": "execute RestApiCallNode Create tenant auth",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v2/baseservice/tenants/authorization/' + $prop.tenant-id`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"tenant-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1539.1596603393555,

+        "y": 1110.0407037734985,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a9cddfc0.c31fc",

+        "type": "set",

+        "name": "set prop.userAccount",

+        "xml": "<set>\n<parameter name='prop.userAccount' value='`$tmp.userAccountEmail`' />\n<parameter name='prop.userEmail' value='`$tmp.userAccountEmail`' />",

+        "comments": "",

+        "x": 1571.008659362793,

+        "y": 816.889702796936,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    },

+    {

+        "id": "7328f02d.f9128",

+        "type": "execute",

+        "name": "execute concat customer-id and @test.com",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >\n    <parameter name=\"source\" value='`$prop.customer-id`'/>\n    <parameter name=\"outputPath\" value=\"tmp.userAccountEmail\"/>\n    <parameter name=\"target\" value=\"@test.com\"/>\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1635.0125350952148,

+        "y": 775.8936452865601,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a8eb8c24.f4a0f",

+        "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/svclogic1.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"vf-module-id-input\"/>\n<parameter name=\"field3\" value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`'/>\n\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1182.3333740234375,

+        "y": 378,

+        "z": "487c8439.e79e0c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d63a100a.4fb85",

+        "type": "set",

+        "name": "set vf-module-level-oper-status",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status'  value='Active' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />\n",

+        "comments": "",

+        "x": 597.0001373291016,

+        "y": 1410.3333740234375,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    },

+    {

+        "id": "45830f23.d0369",

+        "type": "set",

+        "name": "increment param length",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length + 1`' />\n",

+        "comments": "",

+        "x": 580.0000553131104,

+        "y": 1360.0000801086426,

+        "z": "487c8439.e79e0c",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-create.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-create.json
new file mode 100644
index 0000000..d7e57be
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-create.json
@@ -0,0 +1,531 @@
+[

+    {

+        "id": "b9b83207.589ec",

+        "type": "switchNode",

+        "name": "switch this vnf-id == input vnf-id",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\">    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1124.8294982910156,

+        "y": 251.16278839111328,

+        "z": "c7d3e3a8.96c6a",

+        "wires": [

+            [

+                "8cae152d.7cd218"

+            ]

+        ]

+    },

+    {

+        "id": "e1800fba.baf5f",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 414.5,

+        "y": 144.99999237060547,

+        "z": "c7d3e3a8.96c6a",

+        "wires": [

+            [

+                "6d32e66a.a8bcf8"

+            ]

+        ]

+    },

+    {

+        "id": "6d32e66a.a8bcf8",

+        "type": "method",

+        "name": "sdwan-vf-operation-device-create",

+        "xml": "<method rpc='sdwan-vf-operation-device-create' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 413.5,

+        "y": 244.99999237060547,

+        "z": "c7d3e3a8.96c6a",

+        "wires": [

+            [

+                "1cc250f1.53fd7f"

+            ]

+        ]

+    },

+    {

+        "id": "9c8db0b.eb2055",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 244,

+        "y": 56,

+        "z": "c7d3e3a8.96c6a",

+        "wires": [

+            [

+                "e1800fba.baf5f"

+            ]

+        ]

+    },

+    {

+        "id": "1cc250f1.53fd7f",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 572.4999847412109,

+        "y": 361.0000009536743,

+        "z": "c7d3e3a8.96c6a",

+        "wires": [

+            [

+                "3397e2d.64c521e",

+                "92ec911d.95b14",

+                "fa9c393f.4d0eb8",

+                "1192cb09.4cd2d5",

+                "3e5eeaad.69c6b6",

+                "7e451b6c.fd6624",

+                "f6264050.f42d5",

+                "9e2c8c11.572dc",

+                "407f8a81.546654",

+                "f1088162.3598e",

+                "4489ad98.445654",

+                "860ccaf0.19f1e8"

+            ]

+        ]

+    },

+    {

+        "id": "3397e2d.64c521e",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 872.8294067382812,

+        "y": 252.49612522125244,

+        "z": "c7d3e3a8.96c6a",

+        "wires": [

+            [

+                "b9b83207.589ec"

+            ]

+        ]

+    },

+    {

+        "id": "1913a60e.b7faaa",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1496.4959869384766,

+        "y": 253.16279125213623,

+        "z": "c7d3e3a8.96c6a",

+        "wires": []

+    },

+    {

+        "id": "8cae152d.7cd218",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1343.1628150939941,

+        "y": 253.16277027130127,

+        "z": "c7d3e3a8.96c6a",

+        "wires": [

+            [

+                "1913a60e.b7faaa"

+            ]

+        ]

+    },

+    {

+        "id": "1192cb09.4cd2d5",

+        "type": "for",

+        "name": "for loop idx - VF input parameters",

+        "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 946.7501907348633,

+        "y": 474.66665840148926,

+        "z": "c7d3e3a8.96c6a",

+        "wires": [

+            [

+                "f80594ca.7a0348"

+            ]

+        ]

+    },

+    {

+        "id": "f80594ca.7a0348",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1161.5285339355469,

+        "y": 472.2222423553467,

+        "z": "c7d3e3a8.96c6a",

+        "wires": [

+            [

+                "99d262e0.f0c14",

+                "9b7ec3.98d4c14"

+            ]

+        ]

+    },

+    {

+        "id": "99d262e0.f0c14",

+        "type": "execute",

+        "name": "execute split parameterName",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>\n<parameter name=\"regex\" value=\"_\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"param-prefix\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1357.7847366333008,

+        "y": 449.97038078308105,

+        "z": "c7d3e3a8.96c6a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9b7ec3.98d4c14",

+        "type": "set",

+        "name": "set parameterName",

+        "xml": "<set>\n<parameter name=\"`vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`\" value='`$param-prefix[$param-prefix_length -1]`'/>\n",

+        "comments": "",

+        "x": 1327.2291641235352,

+        "y": 486.97049713134766,

+        "z": "c7d3e3a8.96c6a",

+        "wires": []

+    },

+    {

+        "id": "1ce3af0c.391b61",

+        "type": "comment",

+        "name": "Take the parameter names by removing prefix",

+        "info": "",

+        "comments": "",

+        "x": 1330.7503929138184,

+        "y": 409.33332681655884,

+        "z": "c7d3e3a8.96c6a",

+        "wires": []

+    },

+    {

+        "id": "92ec911d.95b14",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 887.25,

+        "y": 207.9999942779541,

+        "z": "c7d3e3a8.96c6a",

+        "wires": [

+            [

+                "1b06d72a.f85559"

+            ]

+        ]

+    },

+    {

+        "id": "1b06d72a.f85559",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1073.9166793823242,

+        "y": 207.3332920074463,

+        "z": "c7d3e3a8.96c6a",

+        "wires": [

+            [

+                "7e3909f0.27dd48"

+            ]

+        ]

+    },

+    {

+        "id": "7e3909f0.27dd48",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n    <parameter name=\"error-message\" value=\"There are no VNFs in MD-SAL\" />\n",

+        "comments": "",

+        "x": 1255.5833053588867,

+        "y": 207.3332920074463,

+        "z": "c7d3e3a8.96c6a",

+        "wires": []

+    },

+    {

+        "id": "fa9c393f.4d0eb8",

+        "type": "switchNode",

+        "name": "switch vf-modules.vf-module_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 928.4999895095825,

+        "y": 327.9999952316284,

+        "z": "c7d3e3a8.96c6a",

+        "wires": [

+            [

+                "fe3884f5.3db408",

+                "f43025e1.350458"

+            ]

+        ]

+    },

+    {

+        "id": "fe3884f5.3db408",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1159.5,

+        "y": 303.99999237060547,

+        "z": "c7d3e3a8.96c6a",

+        "wires": [

+            [

+                "ec84c7cd.2c42f8"

+            ]

+        ]

+    },

+    {

+        "id": "f43025e1.350458",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1159.5,

+        "y": 343.99999237060547,

+        "z": "c7d3e3a8.96c6a",

+        "wires": [

+            [

+                "3d425c4c.b021a4"

+            ]

+        ]

+    },

+    {

+        "id": "ec84c7cd.2c42f8",

+        "type": "set",

+        "name": "set vf-index",

+        "xml": "<set>\n<parameter name='vf-index' value='0' />\n",

+        "comments": "",

+        "x": 1302,

+        "y": 303.99999237060547,

+        "z": "c7d3e3a8.96c6a",

+        "wires": []

+    },

+    {

+        "id": "3d425c4c.b021a4",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1303.8570442199707,

+        "y": 343.9365043640137,

+        "z": "c7d3e3a8.96c6a",

+        "wires": [

+            [

+                "30d4aa0b.cee996",

+                "8e933b3.56987c8"

+            ]

+        ]

+    },

+    {

+        "id": "8e933b3.56987c8",

+        "type": "set",

+        "name": "set vf-index",

+        "xml": "<set>\n<parameter name='vf-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n\n",

+        "comments": "",

+        "x": 1456.555519104004,

+        "y": 313.5556030566804,

+        "z": "c7d3e3a8.96c6a",

+        "wires": []

+    },

+    {

+        "id": "30d4aa0b.cee996",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-index`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1512.9840240478516,

+        "y": 366.7777328491211,

+        "z": "c7d3e3a8.96c6a",

+        "wires": [

+            [

+                "40a39312.e2cd5c"

+            ]

+        ]

+    },

+    {

+        "id": "f966e582.bd5968",

+        "type": "comment",

+        "name": "make sure this network doesn't exist already",

+        "info": "",

+        "comments": "",

+        "x": 1736.6347541809082,

+        "y": 325.03179025650024,

+        "z": "c7d3e3a8.96c6a",

+        "wires": []

+    },

+    {

+        "id": "40a39312.e2cd5c",

+        "type": "switchNode",

+        "name": "switch vf-module-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1788.2697448730469,

+        "y": 366.34923553466797,

+        "z": "c7d3e3a8.96c6a",

+        "wires": [

+            [

+                "d61c18df.dc4958"

+            ]

+        ]

+    },

+    {

+        "id": "d61c18df.dc4958",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1688.999942779541,

+        "y": 424.9206666946411,

+        "z": "c7d3e3a8.96c6a",

+        "wires": [

+            [

+                "d629e081.56166"

+            ]

+        ]

+    },

+    {

+        "id": "d629e081.56166",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id already found in service-data\" />\n",

+        "comments": "",

+        "x": 1836.7500457763672,

+        "y": 424.7778587634675,

+        "z": "c7d3e3a8.96c6a",

+        "wires": []

+    },

+    {

+        "id": "407f8a81.546654",

+        "type": "set",

+        "name": "copy input data to service data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-id' value='`$prop.device-vf-index`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vnf-information.' value='`$vf-module-topology-operation-input.vnf-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />\n\n<!--parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-topology.' value='`$tmp.vf-module-topology.`' /-->\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index+1`' />\n\n",

+        "comments": "",

+        "x": 940.3531951904297,

+        "y": 754.4962153434753,

+        "z": "c7d3e3a8.96c6a",

+        "wires": []

+    },

+    {

+        "id": "9e2c8c11.572dc",

+        "type": "execute",

+        "name": "execute generate-vf-module-index",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.device-vf-index\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 948.6866912841797,

+        "y": 701.1629481315613,

+        "z": "c7d3e3a8.96c6a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f6264050.f42d5",

+        "type": "set",

+        "name": "set new vf-module_length",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index + 1`' />",

+        "comments": "",

+        "x": 922.6866683959961,

+        "y": 647.162841796875,

+        "z": "c7d3e3a8.96c6a",

+        "wires": []

+    },

+    {

+        "id": "3e5eeaad.69c6b6",

+        "type": "set",

+        "name": "set vf-module-request-input.",

+        "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />\n",

+        "comments": "",

+        "x": 937.6863288879395,

+        "y": 537.1542224884033,

+        "z": "c7d3e3a8.96c6a",

+        "wires": []

+    },

+    {

+        "id": "7e451b6c.fd6624",

+        "type": "call",

+        "name": "call sdwan-get-vf-module-device-param",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-device-param' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 963.6867065429688,

+        "y": 593.1544561386108,

+        "z": "c7d3e3a8.96c6a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f1088162.3598e",

+        "type": "set",

+        "name": "set vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $prop.device-vf-index\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",

+        "comments": "",

+        "x": 935.5000877380371,

+        "y": 805.0000605583191,

+        "z": "c7d3e3a8.96c6a",

+        "wires": []

+    },

+    {

+        "id": "4489ad98.445654",

+        "type": "set",

+        "name": "set vf-module-level-oper-status",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.order-status'  value='Created' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />\n",

+        "comments": "",

+        "x": 943.0001907348633,

+        "y": 853.0000247955322,

+        "z": "c7d3e3a8.96c6a",

+        "wires": []

+    },

+    {

+        "id": "a1ffaa29.5bb868",

+        "type": "save",

+        "name": "save sdwan vpn resource in AAI",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource' \n      key='site-resource.site-resource-id = $prop.site-vf-index' >\n<parameter name='site-resource-id' value='`$prop.site-vf-index`' />\n<parameter name='site-resource-name' value='`$prop.site.name`' />\n<parameter name='description' value='`$prop.site.description`' />\n<parameter name='type' value='`$prop.site.type`' />\n<parameter name='role' value='`$prop.site.role`' />\n<parameter name='operational-status' value='Created' />\n<parameter name='model-customization-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />\n<parameter name='selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vf-module-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $service-data.vnfs.vnf[$vnf-index].vnf-id  + '/vnf-data/vf-modules/vf-module/' + $prop.site-vf-index + '/vf-module-data/'` \" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 947.5000419616699,

+        "y": 899.4999761581421,

+        "z": "c7d3e3a8.96c6a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "503ce76b.44e798",

+        "type": "save",

+        "name": "save service relationship in AAI",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='generic-vnf:relationship-list' \n      key='generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"sdwan-vpn\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/sdwan-vpns/sdwan-vpn/' + $prop.site-vf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"sdwan-vpn.id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.site-vf-index`\" />\n\n\n<!--save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource:relationship-list' \n      key='site-resource.site-resource-id = $service-data.vnfs.vnf[$vnf-index].vnf-id' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"sdwan-site\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/sdwan-sites/sdwan-site/' + $prop.site-vf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"sdwan-vpn.id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.site-vf-index`\" /-->\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 946.4999847412109,

+        "y": 946.5000238418579,

+        "z": "c7d3e3a8.96c6a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "860ccaf0.19f1e8",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 895.2225151062012,

+        "y": 992.6738667488098,

+        "z": "c7d3e3a8.96c6a",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-deactivate.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-deactivate.json
new file mode 100644
index 0000000..592f18e
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-deactivate.json
@@ -0,0 +1,790 @@
+[

+    {

+        "id": "eab12fb4.9470c",

+        "type": "method",

+        "name": "method sdwan-vf-operation-device-deactivate",

+        "xml": "<method rpc='sdwan-vf-operation-device-deactivate' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 247.00390625,

+        "y": 208.58633995056152,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "88bd5bad.58a838"

+            ]

+        ]

+    },

+    {

+        "id": "173d417d.3d9d4f",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 156.00390625,

+        "y": 51.99999809265137,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "49f08769.af3e38"

+            ]

+        ]

+    },

+    {

+        "id": "49f08769.af3e38",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 235.28961181640625,

+        "y": 114.23810768127441,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "eab12fb4.9470c"

+            ]

+        ]

+    },

+    {

+        "id": "88bd5bad.58a838",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 233.6705780029297,

+        "y": 393.666711807251,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "8b416f25.fd742",

+                "913862a1.5a856",

+                "4cb8dc52.180e74",

+                "fc24eafd.9fc4a8",

+                "4138123c.14d7fc",

+                "4970f16c.dac46",

+                "895129ed.754e48",

+                "365ea8c0.8e5e88",

+                "3a024eed.b847b2",

+                "b57ebaec.796048",

+                "f96bfa0c.8df2e8",

+                "c52a640a.528f08",

+                "f35fbdc0.23293",

+                "8adce6c1.0054d8",

+                "c93c3cc4.3e059",

+                "2b4abdb6.03e172"

+            ]

+        ]

+    },

+    {

+        "id": "913862a1.5a856",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 579.035270690918,

+        "y": 288.26913928985596,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "efd4ecd6.bbb91"

+            ]

+        ]

+    },

+    {

+        "id": "8b416f25.fd742",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 584.0039253234863,

+        "y": 227.00000858306885,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "d471cf9c.3d2c3"

+            ]

+        ]

+    },

+    {

+        "id": "d471cf9c.3d2c3",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 764.00390625,

+        "y": 225.99999809265137,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "50f0a620.2f6168"

+            ]

+        ]

+    },

+    {

+        "id": "50f0a620.2f6168",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 913.4326324462891,

+        "y": 227.142915725708,

+        "z": "43a65733.428508",

+        "wires": []

+    },

+    {

+        "id": "efd4ecd6.bbb91",

+        "type": "switchNode",

+        "name": "switch this vnf-id == input vnf-id",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\">    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 802.0039215087891,

+        "y": 289.0000042915344,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "ddc6fec5.e8104"

+            ]

+        ]

+    },

+    {

+        "id": "ddc6fec5.e8104",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1017.00390625,

+        "y": 286.99999809265137,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "b9cc7318.0324"

+            ]

+        ]

+    },

+    {

+        "id": "b9cc7318.0324",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1181.00390625,

+        "y": 281.99999809265137,

+        "z": "43a65733.428508",

+        "wires": []

+    },

+    {

+        "id": "4cb8dc52.180e74",

+        "type": "switchNode",

+        "name": "switch vf-modules.vf-module_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 608.0039138793945,

+        "y": 388.99999046325684,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "e6e168ae.5922f8",

+                "fd79ee10.1cfe",

+                "a16175c1.4d7fe8"

+            ]

+        ]

+    },

+    {

+        "id": "fd79ee10.1cfe",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 851.00390625,

+        "y": 393.99999809265137,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "a7f74d79.37951"

+            ]

+        ]

+    },

+    {

+        "id": "e6e168ae.5922f8",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 856.0039024353027,

+        "y": 340.99999713897705,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "a7f74d79.37951"

+            ]

+        ]

+    },

+    {

+        "id": "a7f74d79.37951",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 1014.00390625,

+        "y": 353.99999809265137,

+        "z": "43a65733.428508",

+        "wires": []

+    },

+    {

+        "id": "a16175c1.4d7fe8",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 851.00390625,

+        "y": 454.99999809265137,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "29b73225.fee79e"

+            ]

+        ]

+    },

+    {

+        "id": "9a42153a.0e1ba8",

+        "type": "set",

+        "name": "set vf-module_length",

+        "xml": "<set>\n<parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n",

+        "comments": "",

+        "x": 1205.003921508789,

+        "y": 453.00001204013824,

+        "z": "43a65733.428508",

+        "wires": []

+    },

+    {

+        "id": "29b73225.fee79e",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1012.0039520263672,

+        "y": 451.9999895095825,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "9a42153a.0e1ba8",

+                "a90f8236.4cea3"

+            ]

+        ]

+    },

+    {

+        "id": "a90f8236.4cea3",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1224.003890991211,

+        "y": 505.9999885559082,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "9531aa2b.7d82e8"

+            ]

+        ]

+    },

+    {

+        "id": "9531aa2b.7d82e8",

+        "type": "switchNode",

+        "name": "switch vf-module-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1467.00390625,

+        "y": 500.99999809265137,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "50f86cda.3bbd84"

+            ]

+        ]

+    },

+    {

+        "id": "50f86cda.3bbd84",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1665.0039348602295,

+        "y": 488.0000047683716,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "1f4f69b5.ee4bf6"

+            ]

+        ]

+    },

+    {

+        "id": "1f4f69b5.ee4bf6",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1817.00390625,

+        "y": 489.99999809265137,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "31d234fd.985a5c",

+                "fba615aa.7b1928",

+                "1bbdb98.9d83a47"

+            ]

+        ]

+    },

+    {

+        "id": "31d234fd.985a5c",

+        "type": "set",

+        "name": "set tmp.vidx and ctx.vnf-data",

+        "xml": "<set>\n<parameter name='tmp.vidx' value='`$idx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />\n",

+        "comments": "",

+        "x": 2042.003978729248,

+        "y": 485.00000762939453,

+        "z": "43a65733.428508",

+        "wires": []

+    },

+    {

+        "id": "fba615aa.7b1928",

+        "type": "set",

+        "name": "set vf-module-request-input.",

+        "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />\n\n",

+        "comments": "",

+        "x": 2045.00390625,

+        "y": 534.9999980926514,

+        "z": "43a65733.428508",

+        "wires": []

+    },

+    {

+        "id": "1bbdb98.9d83a47",

+        "type": "call",

+        "name": "call sdwan-get-vf-module-device-param",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-device-param' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2073.0041275024414,

+        "y": 583.0000038146973,

+        "z": "43a65733.428508",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "fc24eafd.9fc4a8",

+        "type": "switchNode",

+        "name": "switch tmp.vidx ",

+        "xml": "<switch test=\"`$tmp.vidx`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 568.0351257324219,

+        "y": 533.0160713195801,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "f7322d10.91c7"

+            ]

+        ]

+    },

+    {

+        "id": "f7322d10.91c7",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 715.4637680053711,

+        "y": 532.5874814987183,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "aba11941.c41518"

+            ]

+        ]

+    },

+    {

+        "id": "aba11941.c41518",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 864.8924942016602,

+        "y": 533.7303991317749,

+        "z": "43a65733.428508",

+        "wires": []

+    },

+    {

+        "id": "4138123c.14d7fc",

+        "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%/generic-resource-api-dg.properties' />\n    <parameter name='contextPrefix' value='prop' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 575.0351448059082,

+        "y": 635.0160565376282,

+        "z": "43a65733.428508",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "8adce6c1.0054d8",

+        "type": "execute",

+        "name": "execute RestApiCallNode Get token",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 620.00390625,

+        "y": 814.9999980926514,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "21e717d4.e526d8",

+                "beac382b.708d18"

+            ]

+        ]

+    },

+    {

+        "id": "21e717d4.e526d8",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 852.00390625,

+        "y": 794.9999980926514,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "ab96a06a.0fe99"

+            ]

+        ]

+    },

+    {

+        "id": "beac382b.708d18",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 844.25390625,

+        "y": 836.6428813934326,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "d406c325.c6945"

+            ]

+        ]

+    },

+    {

+        "id": "ab96a06a.0fe99",

+        "type": "set",

+        "name": "set token-id",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",

+        "comments": "",

+        "x": 989.00390625,

+        "y": 794.9999980926514,

+        "z": "43a65733.428508",

+        "wires": []

+    },

+    {

+        "id": "d406c325.c6945",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 970.33740234375,

+        "y": 836.8889141082764,

+        "z": "43a65733.428508",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f35fbdc0.23293",

+        "type": "get-resource",

+        "name": "get-resource esr-thirdparty-sdnc",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 614.5595703125,

+        "y": 719.2222194671631,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "bbf3791.82cae88",

+                "5c78e46.37fed1c",

+                "6cb7b96f.bcb5f8"

+            ]

+        ]

+    },

+    {

+        "id": "5c78e46.37fed1c",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 847.050464630127,

+        "y": 692.7962417602539,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "dee4ec51.1a644"

+            ]

+        ]

+    },

+    {

+        "id": "dee4ec51.1a644",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",

+        "comments": "",

+        "x": 1020.6218757629395,

+        "y": 681.0819778442383,

+        "z": "43a65733.428508",

+        "wires": []

+    },

+    {

+        "id": "6cb7b96f.bcb5f8",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 839.383472442627,

+        "y": 734.1295547485352,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "af4faa3a.89fcb8"

+            ]

+        ]

+    },

+    {

+        "id": "af4faa3a.89fcb8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",

+        "comments": "",

+        "x": 1027.1560287475586,

+        "y": 729.5687475204468,

+        "z": "43a65733.428508",

+        "wires": []

+    },

+    {

+        "id": "bbf3791.82cae88",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 855.559627532959,

+        "y": 644.2221937179565,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "a080fe09.3fe2b"

+            ]

+        ]

+    },

+    {

+        "id": "a080fe09.3fe2b",

+        "type": "set",

+        "name": "set controller data",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",

+        "comments": "",

+        "x": 1032.059669494629,

+        "y": 635.2221827507019,

+        "z": "43a65733.428508",

+        "wires": []

+    },

+    {

+        "id": "c93c3cc4.3e059",

+        "type": "call",

+        "name": "call sdwan-get-tenant-auth",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 601.0000190734863,

+        "y": 869.5910816192627,

+        "z": "43a65733.428508",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "365ea8c0.8e5e88",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 570.0039882659912,

+        "y": 1320.5000076293945,

+        "z": "43a65733.428508",

+        "wires": []

+    },

+    {

+        "id": "4970f16c.dac46",

+        "type": "set",

+        "name": "set vf-module-oper-status to PendingDelete",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status'  value='PendingDelete' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />\n",

+        "comments": "",

+        "x": 655.4840393066406,

+        "y": 1183.8372745513916,

+        "z": "43a65733.428508",

+        "wires": []

+    },

+    {

+        "id": "895129ed.754e48",

+        "type": "set",

+        "name": "copy input data to service data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n",

+        "comments": "",

+        "x": 612.3372573852539,

+        "y": 1089.8334884643555,

+        "z": "43a65733.428508",

+        "wires": []

+    },

+    {

+        "id": "c52a640a.528f08",

+        "type": "save",

+        "name": "update deviceInstance configuration in AAI",

+        "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' \n      key='device.device-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >\n<parameter name='device-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<!--parameter name='device-id' value='`$deviceResp.success[0].id`' /-->\n<parameter name='operational-status' value='PendingDelete' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 648.6707305908203,

+        "y": 1248.7224197387695,

+        "z": "43a65733.428508",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "3a024eed.b847b2",

+        "type": "set",

+        "name": "set vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",

+        "comments": "",

+        "x": 599.00390625,

+        "y": 1135.2501430511475,

+        "z": "43a65733.428508",

+        "wires": []

+    },

+    {

+        "id": "f96bfa0c.8df2e8",

+        "type": "set",

+        "name": "set device Id length and deviceId",

+        "xml": "<set>\n<parameter name='prop.devices[0]' value='`$prop.device.deviceId`' />\n\n\n",

+        "comments": "",

+        "x": 617.00390625,

+        "y": 977.5039043426514,

+        "z": "43a65733.428508",

+        "wires": []

+    },

+    {

+        "id": "b57ebaec.796048",

+        "type": "set",

+        "name": "set device Id length and deviceId",

+        "xml": "<set>\n<parameter name='prop.devices_length' value='1' />\n\n\n",

+        "comments": "",

+        "x": 621.0038833618164,

+        "y": 935.503867149353,

+        "z": "43a65733.428508",

+        "wires": []

+    },

+    {

+        "id": "12cd00be.9dffef",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 961.0039329528809,

+        "y": 1011.2539529800415,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "f39a352.055c0c8"

+            ]

+        ]

+    },

+    {

+        "id": "f39a352.055c0c8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1132.114948272705,

+        "y": 1010.0317735671997,

+        "z": "43a65733.428508",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5670b097.b1ca5",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 957.5594863891602,

+        "y": 1064.587239265442,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "a7ade3fe.220b3"

+            ]

+        ]

+    },

+    {

+        "id": "a7ade3fe.220b3",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create vpn rest api\" />\n",

+        "comments": "",

+        "x": 1102.5594863891602,

+        "y": 1067.587239265442,

+        "z": "43a65733.428508",

+        "wires": []

+    },

+    {

+        "id": "2b4abdb6.03e172",

+        "type": "execute",

+        "name": "execute RestApiCallNode delete Devcie Instance",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-device-del.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v3/devices'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"delete\"/>\n<parameter name=\"responsePrefix\" value=\"deviceResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 667.4798164367676,

+        "y": 1034.1741046905518,

+        "z": "43a65733.428508",

+        "wires": [

+            [

+                "12cd00be.9dffef",

+                "5670b097.b1ca5"

+            ]

+        ]

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-delete.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-delete.json
new file mode 100644
index 0000000..ad4c6ef
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-delete.json
@@ -0,0 +1,707 @@
+[

+    {

+        "id": "c6fed7ba.2e5e18",

+        "type": "method",

+        "name": "method sdwan-vf-operation-device-delete",

+        "xml": "<method rpc='sdwan-vf-operation-device-delete' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 255.00390625,

+        "y": 216.58634042739868,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "4804312d.8867d"

+            ]

+        ]

+    },

+    {

+        "id": "e5478a26.0a9688",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 164.00390625,

+        "y": 59.999998569488525,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "3b2be231.ea30ae"

+            ]

+        ]

+    },

+    {

+        "id": "3b2be231.ea30ae",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 243.28961181640625,

+        "y": 122.23810815811157,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "c6fed7ba.2e5e18"

+            ]

+        ]

+    },

+    {

+        "id": "4804312d.8867d",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 271.6706085205078,

+        "y": 450.66671800613403,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "f36d7165.5e774",

+                "9c192f6.d32f3d",

+                "edf648d0.949e68",

+                "68b5e9b8.2b0318",

+                "370fd9d.4d0a826",

+                "e73ad2e7.ff301",

+                "61a4bf49.6ae31",

+                "4b0a719b.ddb45",

+                "77882cba.d66624",

+                "75517c95.ffb8a4",

+                "b631e163.c5869",

+                "22f84c9a.3b1234"

+            ]

+        ]

+    },

+    {

+        "id": "9c192f6.d32f3d",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 587.035270690918,

+        "y": 296.2691397666931,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "a9bd8416.007568"

+            ]

+        ]

+    },

+    {

+        "id": "f36d7165.5e774",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 592.0039253234863,

+        "y": 235.000009059906,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "ca4b0462.04ea28"

+            ]

+        ]

+    },

+    {

+        "id": "ca4b0462.04ea28",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 772.00390625,

+        "y": 233.99999856948853,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "6923c8a0.a21e38"

+            ]

+        ]

+    },

+    {

+        "id": "6923c8a0.a21e38",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 921.4326324462891,

+        "y": 235.14291620254517,

+        "z": "314ec97c.2253c6",

+        "wires": []

+    },

+    {

+        "id": "a9bd8416.007568",

+        "type": "switchNode",

+        "name": "switch this vnf-id == input vnf-id",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\">    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 810.0039215087891,

+        "y": 297.0000047683716,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "cd0a501b.5bef4"

+            ]

+        ]

+    },

+    {

+        "id": "cd0a501b.5bef4",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1025.00390625,

+        "y": 294.9999985694885,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "48bd1058.cd2f6"

+            ]

+        ]

+    },

+    {

+        "id": "48bd1058.cd2f6",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1189.00390625,

+        "y": 289.9999985694885,

+        "z": "314ec97c.2253c6",

+        "wires": []

+    },

+    {

+        "id": "edf648d0.949e68",

+        "type": "switchNode",

+        "name": "switch vf-modules.vf-module_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 658.0039405822754,

+        "y": 373.00002336502075,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "428796e8.82f0e8",

+                "dc937af3.d44e48",

+                "71d8961.8097f68"

+            ]

+        ]

+    },

+    {

+        "id": "dc937af3.d44e48",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 880.0039329528809,

+        "y": 407.0000329017639,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "f5d99ed7.a4a21"

+            ]

+        ]

+    },

+    {

+        "id": "428796e8.82f0e8",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 885.0039291381836,

+        "y": 354.0000319480896,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "f5d99ed7.a4a21"

+            ]

+        ]

+    },

+    {

+        "id": "f5d99ed7.a4a21",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 1043.0039329528809,

+        "y": 367.0000329017639,

+        "z": "314ec97c.2253c6",

+        "wires": []

+    },

+    {

+        "id": "71d8961.8097f68",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 880.0039329528809,

+        "y": 468.0000329017639,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "d086ad92.da44d"

+            ]

+        ]

+    },

+    {

+        "id": "1ece4dd8.f577c2",

+        "type": "set",

+        "name": "set vf-module_length",

+        "xml": "<set>\n<parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n",

+        "comments": "",

+        "x": 1234.00394821167,

+        "y": 466.0000468492508,

+        "z": "314ec97c.2253c6",

+        "wires": []

+    },

+    {

+        "id": "d086ad92.da44d",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1041.003978729248,

+        "y": 465.00002431869507,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "1ece4dd8.f577c2",

+                "85d68297.b6351"

+            ]

+        ]

+    },

+    {

+        "id": "85d68297.b6351",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1253.0039176940918,

+        "y": 519.0000233650208,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "22a0d6f0.bf05ea"

+            ]

+        ]

+    },

+    {

+        "id": "22a0d6f0.bf05ea",

+        "type": "switchNode",

+        "name": "switch vf-module-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1496.0039329528809,

+        "y": 514.0000329017639,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "158cf966.e07057"

+            ]

+        ]

+    },

+    {

+        "id": "158cf966.e07057",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1737.0040607452393,

+        "y": 507.00003004074097,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "66a900a3.a3c07"

+            ]

+        ]

+    },

+    {

+        "id": "66a900a3.a3c07",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1889.0040321350098,

+        "y": 509.00002336502075,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "e303b920.69ef18",

+                "94649a24.085df8",

+                "2718f6a1.d8c36a"

+            ]

+        ]

+    },

+    {

+        "id": "e303b920.69ef18",

+        "type": "set",

+        "name": "set tmp.vidx and ctx.vnf-data",

+        "xml": "<set>\n<parameter name='tmp.vidx' value='`$idx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />\n",

+        "comments": "",

+        "x": 2111.0040321350098,

+        "y": 505.00002336502075,

+        "z": "314ec97c.2253c6",

+        "wires": []

+    },

+    {

+        "id": "94649a24.085df8",

+        "type": "set",

+        "name": "set vf-module-request-input.",

+        "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />\n\n",

+        "comments": "",

+        "x": 2117.0040321350098,

+        "y": 554.0000233650208,

+        "z": "314ec97c.2253c6",

+        "wires": []

+    },

+    {

+        "id": "2718f6a1.d8c36a",

+        "type": "call",

+        "name": "call sdwan-get-vf-module-device-param",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-device-param' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2145.004253387451,

+        "y": 602.0000290870667,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "68b5e9b8.2b0318",

+        "type": "switchNode",

+        "name": "switch tmp.vidx ",

+        "xml": "<switch test=\"`$tmp.vidx`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 597.0351524353027,

+        "y": 546.0161061286926,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "99df81ad.4b936"

+            ]

+        ]

+    },

+    {

+        "id": "99df81ad.4b936",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 744.463794708252,

+        "y": 545.5875163078308,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "5487274c.85e858"

+            ]

+        ]

+    },

+    {

+        "id": "5487274c.85e858",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 893.892520904541,

+        "y": 546.7304339408875,

+        "z": "314ec97c.2253c6",

+        "wires": []

+    },

+    {

+        "id": "370fd9d.4d0a826",

+        "type": "switchNode",

+        "name": "switch vf-module-oper-status",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 641.3333129882812,

+        "y": 616.3333115577698,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "8d4cefb5.e8f04",

+                "d9412eaf.21b64"

+            ]

+        ]

+    },

+    {

+        "id": "8d4cefb5.e8f04",

+        "type": "outcome",

+        "name": "outcome PendingDelete",

+        "xml": "<outcome value='PendingDelete'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 932.1665802001953,

+        "y": 620.4444346427917,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "d8669fbd.c1c02"

+            ]

+        ]

+    },

+    {

+        "id": "d9412eaf.21b64",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 899.1667175292969,

+        "y": 672.4444873332977,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "dfeaa117.eea9d"

+            ]

+        ]

+    },

+    {

+        "id": "dfeaa117.eea9d",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'VNF is not in appropriate state for activate. Current state is ' + $service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`\" />",

+        "comments": "",

+        "x": 1058.6664848327637,

+        "y": 675.4444863796234,

+        "z": "314ec97c.2253c6",

+        "wires": []

+    },

+    {

+        "id": "d8669fbd.c1c02",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1129.4729804992676,

+        "y": 630.7695889472961,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b631e163.c5869",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 619.4445152282715,

+        "y": 995.2221984863281,

+        "z": "314ec97c.2253c6",

+        "wires": []

+    },

+    {

+        "id": "22f84c9a.3b1234",

+        "type": "switchNode",

+        "name": "switch prop.device.sdncCreate",

+        "xml": "<switch test=\"`$prop.device.sdncCreate`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 659.0948181152344,

+        "y": 937.5949177742004,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "44543bd3.4c8bf4"

+            ]

+        ]

+    },

+    {

+        "id": "e73ad2e7.ff301",

+        "type": "set",

+        "name": "set prop.vnfNewidx",

+        "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`0`' />\n",

+        "comments": "",

+        "x": 615.5311832427979,

+        "y": 690.3333535194397,

+        "z": "314ec97c.2253c6",

+        "wires": []

+    },

+    {

+        "id": "61a4bf49.6ae31",

+        "type": "for",

+        "name": "for lidx..service-data.vf-modules.vf-module[]",

+        "xml": "<for index='lidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 695.5310974121094,

+        "y": 741.3333554267883,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "da9431cc.52513"

+            ]

+        ]

+    },

+    {

+        "id": "4b0a719b.ddb45",

+        "type": "set",

+        "name": "set new vnf length",

+        "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length\" value='`$prop.vnfidxLen`'/>\n\n\t\n",

+        "comments": "",

+        "x": 619.6324615478516,

+        "y": 792.1375555992126,

+        "z": "314ec97c.2253c6",

+        "wires": []

+    },

+    {

+        "id": "77882cba.d66624",

+        "type": "set",

+        "name": "Remove vnf from ServiceData",

+        "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].\" value=\"\"/>\n",

+        "comments": "",

+        "x": 656.5311431884766,

+        "y": 844.3333582878113,

+        "z": "314ec97c.2253c6",

+        "wires": []

+    },

+    {

+        "id": "da9431cc.52513",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 955.5310878753662,

+        "y": 748.3332152366638,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "18a9693d.650b17"

+            ]

+        ]

+    },

+    {

+        "id": "44543bd3.4c8bf4",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 870.094669342041,

+        "y": 936.5945897102356,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "33a69b5b.9a15c4"

+            ]

+        ]

+    },

+    {

+        "id": "33a69b5b.9a15c4",

+        "type": "delete",

+        "name": "delete wan port instance configuration in AAI",

+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='device' \n        key='device.device-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1136.5314407348633,

+        "y": 934.5948338508606,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "18a9693d.650b17",

+        "type": "switchNode",

+        "name": "switch vnf-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$lidx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1141.5311546325684,

+        "y": 748.3333759307861,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "3ab3fce3.adf244"

+            ]

+        ]

+    },

+    {

+        "id": "3ab3fce3.adf244",

+        "type": "outcomeFalse",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1310.531162261963,

+        "y": 747.3332133293152,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "9c7fc57d.2e0378"

+            ]

+        ]

+    },

+    {

+        "id": "9c7fc57d.2e0378",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1464.5310010910034,

+        "y": 739.3332142829895,

+        "z": "314ec97c.2253c6",

+        "wires": [

+            [

+                "3c3fb736.ab7c18",

+                "3d45148.2511eec"

+            ]

+        ]

+    },

+    {

+        "id": "3c3fb736.ab7c18",

+        "type": "set",

+        "name": "set  vnf data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-data.`' />\n",

+        "comments": "",

+        "x": 1629.531096458435,

+        "y": 714.3333697319031,

+        "z": "314ec97c.2253c6",

+        "wires": []

+    },

+    {

+        "id": "3d45148.2511eec",

+        "type": "set",

+        "name": "set prop.vnfNewidx",

+        "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />\n",

+        "comments": "",

+        "x": 1651.531096458435,

+        "y": 770.333333492279,

+        "z": "314ec97c.2253c6",

+        "wires": []

+    },

+    {

+        "id": "75517c95.ffb8a4",

+        "type": "set",

+        "name": "set vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",

+        "comments": "",

+        "x": 643.3333511352539,

+        "y": 889.6666932106018,

+        "z": "314ec97c.2253c6",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-activate.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-activate.json
new file mode 100644
index 0000000..138d31f
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-activate.json
@@ -0,0 +1,1853 @@
+[

+    {

+        "id": "cea6a9f1.279478",

+        "type": "switchNode",

+        "name": "switch vf-modules.vf-module_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 570.7143020629883,

+        "y": 337.99999046325684,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "4a89ecf7.049034",

+                "2a09fa32.63fc36",

+                "c2f1098d.e8bd38"

+            ]

+        ]

+    },

+    {

+        "id": "1833f3f4.1b830c",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 107.71429824829102,

+        "y": 29,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "181dc2fc.e539bd"

+            ]

+        ]

+    },

+    {

+        "id": "181dc2fc.e539bd",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 177,

+        "y": 92.23810958862305,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "25791551.06845a"

+            ]

+        ]

+    },

+    {

+        "id": "25791551.06845a",

+        "type": "method",

+        "name": "method sdwan-vf-operation-lanport-activate",

+        "xml": "<method rpc='sdwan-vf-operation-lanport-activate' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 188.71429443359375,

+        "y": 186.58634185791016,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "419d7afa.b1ca54"

+            ]

+        ]

+    },

+    {

+        "id": "419d7afa.b1ca54",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 189.38096618652344,

+        "y": 442.666708946228,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "f5110085.4f487",

+                "f62e0d25.9e73c",

+                "cea6a9f1.279478",

+                "76df47d2.f28eb8",

+                "3a550152.acb95e",

+                "bad651b2.12a17",

+                "a66a0a0e.fef0c8",

+                "f2a2fd31.6afea",

+                "11a6133a.d1ed1d",

+                "6bb3e148.a2b06",

+                "233d7734.c6ad18",

+                "ec89c38e.b0db3",

+                "cfe4c928.772628",

+                "307480f2.c3f12",

+                "83adcbda.9cab18",

+                "41a8aff.133475",

+                "bf4ca0a0.f719b",

+                "14cdbea6.6ff3c1",

+                "96f47da7.f3275",

+                "7299f238.fa9f1c",

+                "e4f03070.b443a",

+                "1e3434c6.db511b",

+                "56401cb0.1f0164"

+            ]

+        ]

+    },

+    {

+        "id": "f62e0d25.9e73c",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 520.7456588745117,

+        "y": 266.2691411972046,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "b7bf67d0.4c13b8"

+            ]

+        ]

+    },

+    {

+        "id": "f5110085.4f487",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 525.7143135070801,

+        "y": 205.00001049041748,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "61a8d0c5.ce10b"

+            ]

+        ]

+    },

+    {

+        "id": "61a8d0c5.ce10b",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 705.7142944335938,

+        "y": 204,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "3e167156.21c02e"

+            ]

+        ]

+    },

+    {

+        "id": "3e167156.21c02e",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 855.1430206298828,

+        "y": 205.14291763305664,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "b7bf67d0.4c13b8",

+        "type": "switchNode",

+        "name": "switch this vnf-id == input vnf-id",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\">    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 743.7143096923828,

+        "y": 267.00000619888306,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "29696342.56f90c"

+            ]

+        ]

+    },

+    {

+        "id": "29696342.56f90c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 958.7142944335938,

+        "y": 265,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "1ba7830b.c7ea6d"

+            ]

+        ]

+    },

+    {

+        "id": "1ba7830b.c7ea6d",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1122.7142944335938,

+        "y": 260,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "2a09fa32.63fc36",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 792.7142944335938,

+        "y": 372,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "4ead305d.0b806"

+            ]

+        ]

+    },

+    {

+        "id": "4a89ecf7.049034",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 797.7142906188965,

+        "y": 318.9999990463257,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "4ead305d.0b806"

+            ]

+        ]

+    },

+    {

+        "id": "4ead305d.0b806",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 955.7142944335938,

+        "y": 332,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "c2f1098d.e8bd38",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 792.7142944335938,

+        "y": 433,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "2458c219.d10e1e"

+            ]

+        ]

+    },

+    {

+        "id": "ead36ccd.33529",

+        "type": "set",

+        "name": "set vf-module_length",

+        "xml": "<set>\n<parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n",

+        "comments": "",

+        "x": 1146.7143096923828,

+        "y": 431.0000139474869,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "2458c219.d10e1e",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 953.7143402099609,

+        "y": 429.99999141693115,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "ead36ccd.33529",

+                "386f97ee.904d48"

+            ]

+        ]

+    },

+    {

+        "id": "386f97ee.904d48",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1165.7142791748047,

+        "y": 483.99999046325684,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "593c39.dc7673c8"

+            ]

+        ]

+    },

+    {

+        "id": "593c39.dc7673c8",

+        "type": "switchNode",

+        "name": "switch vf-module-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1408.7142944335938,

+        "y": 479,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "1efda74.b0eb959"

+            ]

+        ]

+    },

+    {

+        "id": "1efda74.b0eb959",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1606.7143230438232,

+        "y": 466.0000066757202,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "d0b5f3a2.35747"

+            ]

+        ]

+    },

+    {

+        "id": "d0b5f3a2.35747",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1758.7142944335938,

+        "y": 468,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "1fc6559e.18634a",

+                "802dea9f.3c2848",

+                "9329a8cc.23d418"

+            ]

+        ]

+    },

+    {

+        "id": "1fc6559e.18634a",

+        "type": "set",

+        "name": "set tmp.vidx and ctx.vnf-data",

+        "xml": "<set>\n<parameter name='tmp.vidx' value='`$idx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />\n",

+        "comments": "",

+        "x": 1986.7144088745117,

+        "y": 410.00000381469727,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "802dea9f.3c2848",

+        "type": "set",

+        "name": "set vf-module-request-input.",

+        "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />\n\n",

+        "comments": "",

+        "x": 1990.7144088745117,

+        "y": 464.00000381469727,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "76df47d2.f28eb8",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 504.714412689209,

+        "y": 2079.501151561737,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "9329a8cc.23d418",

+        "type": "call",

+        "name": "call sdwan-get-vf-module-lanport-param",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-lanport-param' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2021.16943359375,

+        "y": 515.0104961395264,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b2d390ae.97474",

+        "type": "for",

+        "name": "for vf-modules.vf-module_length",

+        "xml": "<for index='vfidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 827.9683685302734,

+        "y": 520.0040225982666,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "7dff73e1.0243cc"

+            ]

+        ]

+    },

+    {

+        "id": "3f6c843d.edec8c",

+        "type": "switchNode",

+        "name": "switch this deviceName == vf-input",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value == '$prop.lan.deviceName'`\">\n    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1100.9686126708984,

+        "y": 606.0041282176971,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "cb455713.e1bdd8"

+            ]

+        ]

+    },

+    {

+        "id": "7dff73e1.0243cc",

+        "type": "for",

+        "name": "for vf-module-input-param length",

+        "xml": "<for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1125.9682846069336,

+        "y": 523.0040645599365,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "3f6c843d.edec8c"

+            ]

+        ]

+    },

+    {

+        "id": "cb455713.e1bdd8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1314.9684257507324,

+        "y": 603.0041129589081,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "8c1ad275.b541"

+            ]

+        ]

+    },

+    {

+        "id": "8c1ad275.b541",

+        "type": "for",

+        "name": "for vf-modules.vf-module_length",

+        "xml": "<for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1528.9684677124023,

+        "y": 599.0040664672852,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "6aaf6a5c.76e9f4"

+            ]

+        ]

+    },

+    {

+        "id": "6aaf6a5c.76e9f4",

+        "type": "switchNode",

+        "name": "switch deviceId == input vf-id",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'deviceId'`\">\n    \n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1843.9685440063477,

+        "y": 598.0040471553802,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "85841cc6.de2b3"

+            ]

+        ]

+    },

+    {

+        "id": "85841cc6.de2b3",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2045.9686737060547,

+        "y": 596.0040481090546,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "1722d3f0.fc82dc"

+            ]

+        ]

+    },

+    {

+        "id": "1722d3f0.fc82dc",

+        "type": "set",

+        "name": "set prop.lan.deviceId",

+        "xml": "<set>\n<parameter name='prop.lan.deviceId' value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />\n",

+        "comments": "",

+        "x": 2220.9685668945312,

+        "y": 596.004228591919,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "3a550152.acb95e",

+        "type": "for",

+        "name": "for service-data.vnfs.vnf_length",

+        "xml": "<for index='vnfidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 573.9682159423828,

+        "y": 455.00401973724365,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "b2d390ae.97474"

+            ]

+        ]

+    },

+    {

+        "id": "566234f6.d57f8c",

+        "type": "switchNode",

+        "name": "switch ActivateSDWANSiteInstance",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action == 'ActivateSDWANSiteInstance'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1168.7185821533203,

+        "y": 727.0039882659912,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "d08758a.8a9d4a8"

+            ]

+        ]

+    },

+    {

+        "id": "4a6e0872.754c78",

+        "type": "for",

+        "name": "for vf-modules.vf-module_length",

+        "xml": "<for index='vfidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 814.7184219360352,

+        "y": 694.0040283203125,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "2141a4d0.4ed0ac"

+            ]

+        ]

+    },

+    {

+        "id": "83adcbda.9cab18",

+        "type": "for",

+        "name": "for service-data.vnfs.vnf_length",

+        "xml": "<for index='vnfidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 565.7182769775391,

+        "y": 625.0039081573486,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "4a6e0872.754c78"

+            ]

+        ]

+    },

+    {

+        "id": "d08758a.8a9d4a8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1390.7184982299805,

+        "y": 727.0040698051453,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "5c9349a5.10cdf8"

+            ]

+        ]

+    },

+    {

+        "id": "5c9349a5.10cdf8",

+        "type": "for",

+        "name": "for vf-modules.vf-module_length",

+        "xml": "<for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1471.968505859375,

+        "y": 801.5040712356567,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "78c531f9.c452d"

+            ]

+        ]

+    },

+    {

+        "id": "78502254.1e1d1c",

+        "type": "switchNode",

+        "name": "switch siteId",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'siteId'`\">\n    \n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1854.968864440918,

+        "y": 808.5041785240173,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "cef8d9d4.a847d8"

+            ]

+        ]

+    },

+    {

+        "id": "cef8d9d4.a847d8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2031.9688835144043,

+        "y": 811.5040187835693,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "57774070.165c4"

+            ]

+        ]

+    },

+    {

+        "id": "26765522.97752a",

+        "type": "set",

+        "name": "set prop.attach.siteId",

+        "xml": "<set>\n<parameter name='prop.attach.siteId' value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />\n",

+        "comments": "",

+        "x": 2415.9693908691406,

+        "y": 785.5040702819824,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "57774070.165c4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2191.2190742492676,

+        "y": 807.0040588378906,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "26765522.97752a",

+                "18aa70c2.f51f1f",

+                "95fdece9.83f56",

+                "13d1a87e.cc7dd8"

+            ]

+        ]

+    },

+    {

+        "id": "41a8aff.133475",

+        "type": "get-resource",

+        "name": "get-resource esr-thirdparty-sdnc",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 526.7182235717773,

+        "y": 944.5039968490601,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "9e1e759b.490ef8",

+                "587c1d85.98e364",

+                "1fecffb3.fdfc1"

+            ]

+        ]

+    },

+    {

+        "id": "9e1e759b.490ef8",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 770.7182846069336,

+        "y": 908.5039968490601,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "1eeec00d.ea37e"

+            ]

+        ]

+    },

+    {

+        "id": "587c1d85.98e364",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 773.2091674804688,

+        "y": 944.0780334472656,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "f1f9240f.1bbe98"

+            ]

+        ]

+    },

+    {

+        "id": "1fecffb3.fdfc1",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 768.5421752929688,

+        "y": 980.4113922119141,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "e9937b5c.1de1c8"

+            ]

+        ]

+    },

+    {

+        "id": "e9937b5c.1de1c8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",

+        "comments": "",

+        "x": 922.3146667480469,

+        "y": 977.8504791259766,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "f1f9240f.1bbe98",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",

+        "comments": "",

+        "x": 918.7805633544922,

+        "y": 942.3637208938599,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "1eeec00d.ea37e",

+        "type": "set",

+        "name": "set controller data",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",

+        "comments": "",

+        "x": 931.2183952331543,

+        "y": 906.5039367675781,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "bf4ca0a0.f719b",

+        "type": "execute",

+        "name": "execute RestApiCallNode Get token",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 540.6564559936523,

+        "y": 1047.62509059906,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "d05110e4.15f05",

+                "623a881a.ebe538"

+            ]

+        ]

+    },

+    {

+        "id": "d05110e4.15f05",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 775.6565818786621,

+        "y": 1033.6250791549683,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "adf2584e.694ce8"

+            ]

+        ]

+    },

+    {

+        "id": "623a881a.ebe538",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 774.9065818786621,

+        "y": 1069.2679862976074,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "e8c30ab5.68d3b8"

+            ]

+        ]

+    },

+    {

+        "id": "e8c30ab5.68d3b8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing get token rest api\" />\n",

+        "comments": "",

+        "x": 923.6565895080566,

+        "y": 1070.0180683135986,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "adf2584e.694ce8",

+        "type": "set",

+        "name": "set token-id",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",

+        "comments": "",

+        "x": 917.6565895080566,

+        "y": 1032.6250801086426,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "96f47da7.f3275",

+        "type": "execute",

+        "name": "execute RestApiCallNode device port create",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdlan-port.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"portResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 566.7455520629883,

+        "y": 1199.0782289505005,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "50af67d.1491698",

+                "bef4965a.55b458"

+            ]

+        ]

+    },

+    {

+        "id": "50af67d.1491698",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 815.7456111907959,

+        "y": 1213.0784349441528,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "b4a513b9.d44d6"

+            ]

+        ]

+    },

+    {

+        "id": "bef4965a.55b458",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 815.7456111907959,

+        "y": 1175.0782704353333,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "d695c8db.015488"

+            ]

+        ]

+    },

+    {

+        "id": "d695c8db.015488",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create device port rest api\" />\n",

+        "comments": "",

+        "x": 959.7459449768066,

+        "y": 1174.078269958496,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "b4a513b9.d44d6",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 962.7456226348877,

+        "y": 1214.0782737731934,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "bad651b2.12a17",

+        "type": "set",

+        "name": "set prop.lan.devicePortId",

+        "xml": "<set>\n<parameter name='prop.lan.devicePortId' value='`$portResp.success[0].id`' />\n",

+        "comments": "",

+        "x": 509.4028129577637,

+        "y": 1252.1794338226318,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "1d5fca27.3bbea6",

+        "type": "comment",

+        "name": "Create port",

+        "info": "",

+        "comments": "",

+        "x": 468.41149139404297,

+        "y": 1165.522253036499,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "14cdbea6.6ff3c1",

+        "type": "call",

+        "name": "call sdwan-get-tenant-auth",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 515.411491394043,

+        "y": 1114.1886892318726,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f52cabac.abeb68",

+        "type": "execute",

+        "name": "execute RestApiCallNode bridge domain create",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdlan-bridge-domain.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/bridge-domains'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"bridgeDomainResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 989.3958015441895,

+        "y": 1294.188857793808,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "441eed4c.baf224",

+                "fa3f1c96.1fc6d"

+            ]

+        ]

+    },

+    {

+        "id": "441eed4c.baf224",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1310.3958282470703,

+        "y": 1311.1891782283783,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "a63cb83c.98c9e8"

+            ]

+        ]

+    },

+    {

+        "id": "fa3f1c96.1fc6d",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1313.3958549499512,

+        "y": 1276.1889598369598,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "421c7bf9.398d94"

+            ]

+        ]

+    },

+    {

+        "id": "421c7bf9.398d94",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create bridge domain rest api\" />\n",

+        "comments": "",

+        "x": 1516.3962440490723,

+        "y": 1272.1890671253204,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "a63cb83c.98c9e8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1517.395809173584,

+        "y": 1307.1889336109161,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7044fc7.42f8204",

+        "type": "comment",

+        "name": "Create bridge domain",

+        "info": "",

+        "comments": "",

+        "x": 933.061695098877,

+        "y": 1260.6330835819244,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "a66a0a0e.fef0c8",

+        "type": "switchNode",

+        "name": "switch portSwitch",

+        "xml": "<switch test=\"`$prop.lan.portSwitch == 'layer2-port'`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 489.17326736450195,

+        "y": 1295.855489730835,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "cc6612da.43a9"

+            ]

+        ]

+    },

+    {

+        "id": "cc6612da.43a9",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 668.1732978820801,

+        "y": 1295.966812133789,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "f52cabac.abeb68"

+            ]

+        ]

+    },

+    {

+        "id": "f2a2fd31.6afea",

+        "type": "execute",

+        "name": "execute split ip and mask",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.lan.ipAddress`'/>\n<parameter name=\"regex\" value=\"/\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"ipandMask\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 513.71826171875,

+        "y": 1395.7540397644043,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "c87ddd20.90349",

+                "aaf35528.c457d8"

+            ]

+        ]

+    },

+    {

+        "id": "aaf35528.c457d8",

+        "type": "failure",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 714.7182807922363,

+        "y": 1373.7540311813354,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "f3c46122.a1ec5"

+            ]

+        ]

+    },

+    {

+        "id": "c87ddd20.90349",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 714.7182846069336,

+        "y": 1414.7540349960327,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "3701541a.3aea9c"

+            ]

+        ]

+    },

+    {

+        "id": "f3c46122.a1ec5",

+        "type": "set",

+        "name": "set ipAddress prefixLength",

+        "xml": "<set>\n<parameter name='prop.lan.ip-address' value='`$ipandMask[0]`' />\n<parameter name='prop.lan.prefixLength' value='`$ipandMask[1]`' />",

+        "comments": "",

+        "x": 911.7182998657227,

+        "y": 1371.7540311813354,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "3701541a.3aea9c",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value=\"An error occured while splitting sna1_route\" />\n",

+        "comments": "",

+        "x": 869.7182922363281,

+        "y": 1411.7540340423584,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "6cdf4550.c744bc",

+        "type": "comment",

+        "name": "Create wan port",

+        "info": "",

+        "comments": "",

+        "x": 486.7281379699707,

+        "y": 1348.7640895843506,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "2701cb4.59cff34",

+        "type": "comment",

+        "name": "TODO: split ip/mask",

+        "info": "",

+        "comments": "",

+        "x": 910.7279319763184,

+        "y": 1333.9343032836914,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "7299f238.fa9f1c",

+        "type": "execute",

+        "name": "execute RestApiCallNode IPSubnets create",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdlan-ip-subnets.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/ip-subnets'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"lanPortResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 572.489631652832,

+        "y": 1471.8749294281006,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "fe753b01.7a4008",

+                "c50acfa.66a383"

+            ]

+        ]

+    },

+    {

+        "id": "c50acfa.66a383",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 841.4896621704102,

+        "y": 1458.8749017715454,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "da685c50.c0fca"

+            ]

+        ]

+    },

+    {

+        "id": "fe753b01.7a4008",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 838.4896354675293,

+        "y": 1493.8751201629639,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "7c874cb1.b7ec64"

+            ]

+        ]

+    },

+    {

+        "id": "da685c50.c0fca",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create device port rest api\" />\n",

+        "comments": "",

+        "x": 994.4900436401367,

+        "y": 1454.8751277923584,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "7c874cb1.b7ec64",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 985.489616394043,

+        "y": 1494.8748760223389,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "220d830a.a3737c"

+            ]

+        ]

+    },

+    {

+        "id": "220d830a.a3737c",

+        "type": "set",

+        "name": "set prop.lan.lanPortId",

+        "xml": "<set>\n<parameter name='prop.lan.lanPortId' value='`lanPortResp.success[0].id`' />\n",

+        "comments": "",

+        "x": 1192.378719329834,

+        "y": 1497.208342552185,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "1e3434c6.db511b",

+        "type": "execute",

+        "name": "execute RestApiCallNode create vpn topology",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-vpn-topology.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/' + $prop.vpn1Id + '/topology'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"vpn-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 598.0000534057617,

+        "y": 1630.333706855774,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "dad634fb.8374a8",

+                "222fdfc3.31cbd"

+            ]

+        ]

+    },

+    {

+        "id": "222fdfc3.31cbd",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 836.9999675750732,

+        "y": 1677.333193898201,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "a113b13a.6f74c"

+            ]

+        ]

+    },

+    {

+        "id": "a113b13a.6f74c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1006.999906539917,

+        "y": 1680.333193898201,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "66af30b.a74d8d",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create vpn topology failed\" />\n",

+        "comments": "",

+        "x": 1007.0000286102295,

+        "y": 1636.333193898201,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "dad634fb.8374a8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 839.999906539917,

+        "y": 1636.333193898201,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "66af30b.a74d8d"

+            ]

+        ]

+    },

+    {

+        "id": "e4f03070.b443a",

+        "type": "execute",

+        "name": "execute RestApiCallNode create vpn ",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-vpn.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/vpn'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"vpn-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 559.9984092712402,

+        "y": 1561.8328762054443,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "93f9856d.ae6458",

+                "98bd094d.9d68c8"

+            ]

+        ]

+    },

+    {

+        "id": "98bd094d.9d68c8",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 780.99831199646,

+        "y": 1583.8328419923782,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "54c36251.c8076c"

+            ]

+        ]

+    },

+    {

+        "id": "54c36251.c8076c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 950.9982509613037,

+        "y": 1586.8328419923782,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "719bdb7c.5a10b4",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create vpn failed\" />\n",

+        "comments": "",

+        "x": 950.9983730316162,

+        "y": 1542.8328419923782,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "93f9856d.ae6458",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 783.9982509613037,

+        "y": 1542.8328419923782,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "719bdb7c.5a10b4"

+            ]

+        ]

+    },

+    {

+        "id": "cdd2e071.957e3",

+        "type": "switchNode",

+        "name": "switch ActivateSDWANVpnInstance",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action == 'ActivateSDWANVpnInstance'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1147.0002365112305,

+        "y": 848.3332567214966,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "f5335833.4ba238"

+            ]

+        ]

+    },

+    {

+        "id": "2141a4d0.4ed0ac",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 904.3333396911621,

+        "y": 777.3333368301392,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "566234f6.d57f8c",

+                "cdd2e071.957e3",

+                "785db3d8.98fb5c"

+            ]

+        ]

+    },

+    {

+        "id": "f5335833.4ba238",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1242.666748046875,

+        "y": 922.3333377838135,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "deda6015.73137"

+            ]

+        ]

+    },

+    {

+        "id": "deda6015.73137",

+        "type": "for",

+        "name": "for vf-modules.vf-module_length",

+        "xml": "<for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1456.916633605957,

+        "y": 923.8333144187927,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "6ef0c48a.c4e20c"

+            ]

+        ]

+    },

+    {

+        "id": "6ef0c48a.c4e20c",

+        "type": "switchNode",

+        "name": "switch vpn-id",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'vpn-id'`\">\n    \n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1703.9166717529297,

+        "y": 918.8333973884583,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "45631feb.4e63d"

+            ]

+        ]

+    },

+    {

+        "id": "45631feb.4e63d",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1854.6666259765625,

+        "y": 920.3333129882812,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "4fe0c915.7019d8"

+            ]

+        ]

+    },

+    {

+        "id": "4fe0c915.7019d8",

+        "type": "set",

+        "name": "set prop.vpn1Id",

+        "xml": "<set>\n<parameter name='prop.vpn1Id' value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />\n",

+        "comments": "",

+        "x": 2028.6673736572266,

+        "y": 920.3333714008331,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "18aa70c2.f51f1f",

+        "type": "set",

+        "name": "Add sites to list and update length",

+        "xml": "<set>\n<parameter name='prop.siteIds[$prop.siteIds_length]' value='`$prop.attach.siteId`' />\n<parameter name='prop.siteIds_length' value='`$prop.siteIds_length + 1`' />\n\n\n\n\n\n\n\n\n\n\n\n\n\n",

+        "comments": "",

+        "x": 2459.000747680664,

+        "y": 826.3333714008331,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "95fdece9.83f56",

+        "type": "set",

+        "name": "Add site attachement to list and update length",

+        "xml": "<set>\n<parameter name='prop.siteAttachements[$prop.siteAttachements_length].siteId' value='`$prop.attach.siteId`' />\n<parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles[0]' value='`$prop.role`' />\n<parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles_length' value='1' />\n<parameter name='prop.siteAttachements_length' value='`$prop.siteAttachements_length + 1`' />\n\n\n\n\n\n\n\n\n\n\n\n\n",

+        "comments": "",

+        "x": 2490.0006408691406,

+        "y": 869.3333377838135,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "11a6133a.d1ed1d",

+        "type": "set",

+        "name": "set prop.siteAttachement_length=0",

+        "xml": "<set>\n<parameter name='prop.siteAttachements_length' value='0' />\n<parameter name='prop.siteIds_length' value='0' />\n\n\n\n",

+        "comments": "",

+        "x": 576.0000152587891,

+        "y": 574.333330154419,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "78c531f9.c452d",

+        "type": "block",

+        "name": "block atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1689.3336715698242,

+        "y": 802.3333358764648,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "78502254.1e1d1c",

+                "63d66e16.071a8",

+                "5671530f.b2ba5c"

+            ]

+        ]

+    },

+    {

+        "id": "63d66e16.071a8",

+        "type": "switchNode",

+        "name": "switch role",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'role'`\">\n    \n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1851.666603088379,

+        "y": 733.3333349227905,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "5896f487.b2b6fc"

+            ]

+        ]

+    },

+    {

+        "id": "5896f487.b2b6fc",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2014.6666069030762,

+        "y": 728.3333358764648,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "21c68e35.ea4b92"

+            ]

+        ]

+    },

+    {

+        "id": "21c68e35.ea4b92",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2182.666648864746,

+        "y": 722.3333339691162,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "c62b7f98.336c5",

+                "2c113cab.56e434",

+                "c2240666.9ee948"

+            ]

+        ]

+    },

+    {

+        "id": "2c113cab.56e434",

+        "type": "switchNode",

+        "name": "switch sd-wan-edge",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value == 'sd-wan-edge'`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2377.666778564453,

+        "y": 683.3333253860474,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "ba2b297.cd792d8"

+            ]

+        ]

+    },

+    {

+        "id": "c62b7f98.336c5",

+        "type": "switchNode",

+        "name": "switch dsvpn-hub",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'dsvpn-hub'`\">\n    \n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2374.6668853759766,

+        "y": 738.333340883255,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "f4f54567.510e38"

+            ]

+        ]

+    },

+    {

+        "id": "8ed96cca.37dc4",

+        "type": "set",

+        "name": "set spoke role",

+        "xml": "<set>\n<parameter name='prop.role' value=\"spoke\" />\n",

+        "comments": "",

+        "x": 2707.6669006347656,

+        "y": 677.3333711624146,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "4cf4d59c.e1707c",

+        "type": "set",

+        "name": "set hub role",

+        "xml": "<set>\n<parameter name='prop.role' value=\"hub\" />\n",

+        "comments": "",

+        "x": 2706.666660308838,

+        "y": 732.3333549499512,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "ba2b297.cd792d8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2547.666748046875,

+        "y": 679,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "8ed96cca.37dc4"

+            ]

+        ]

+    },

+    {

+        "id": "f4f54567.510e38",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2551.666748046875,

+        "y": 734,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            [

+                "4cf4d59c.e1707c"

+            ]

+        ]

+    },

+    {

+        "id": "56401cb0.1f0164",

+        "type": "update",

+        "name": "update SDWAN VPN status to AAI",

+        "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='lan-port-config' \n      key='sdwan-vpn.sdwan-vpn-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >\n<parameter name='sdwan-vpn-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<parameter name='operational-status' value='Active' />\n<parameter name='lan-port-config-id' value='`$prop.lan-port-config-id`' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 560.0312843322754,

+        "y": 1998.031280040741,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ec89c38e.b0db3",

+        "type": "set",

+        "name": "set vf-module-level-oper-status",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status'  value='Active' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />",

+        "comments": "",

+        "x": 556.6663017272949,

+        "y": 1941.1261107651517,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "233d7734.c6ad18",

+        "type": "set",

+        "name": "set vf-module-id and vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",

+        "comments": "",

+        "x": 590.6663017272949,

+        "y": 1892.6261098114774,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "6bb3e148.a2b06",

+        "type": "set",

+        "name": "copy input data in service-data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n",

+        "comments": "",

+        "x": 554.6662559509277,

+        "y": 1844.876064300537,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "307480f2.c3f12",

+        "type": "set",

+        "name": "set device PortId to service data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='devicePortId' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$prop.lan.devicePortId`' />\n",

+        "comments": "",

+        "x": 561.031322479248,

+        "y": 1738.0314636230469,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "cfe4c928.772628",

+        "type": "set",

+        "name": "set lan PortId to service data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='lanPortId' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$prop.lan.lanPortId`' />\n",

+        "comments": "",

+        "x": 547.0312461853027,

+        "y": 1792.0312767028809,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    },

+    {

+        "id": "13d1a87e.cc7dd8",

+        "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/svclogic21.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"prop.attach.siteId\"/>\n<parameter name=\"field3\" value='`$prop.attach.siteId`'/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2384.0313873291016,

+        "y": 914.5312805175781,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c2240666.9ee948",

+        "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/svclogic22.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"set spoke role\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2353.0313987731934,

+        "y": 645.531247138977,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5671530f.b2ba5c",

+        "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/svclogic23.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"param-name\"/>\n<parameter name=\"field3\" value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name`'/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1847.03125,

+        "y": 677.53125,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "785db3d8.98fb5c",

+        "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/svclogic24.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"request-action\"/>\n<parameter name=\"field3\" value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action`'/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1096.03125,

+        "y": 686.53125,

+        "z": "2f0cf160.dc107e",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "bacdcf2a.07a41",

+        "type": "comment",

+        "name": "**revert the changes",

+        "info": "",

+        "comments": "",

+        "x": 1248.0312767028809,

+        "y": 683.0312824249268,

+        "z": "2f0cf160.dc107e",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-create.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-create.json
new file mode 100644
index 0000000..b4f838d
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-create.json
@@ -0,0 +1,533 @@
+[

+    {

+        "id": "3d343d97.916e12",

+        "type": "method",

+        "name": "sdwan-vf-operation-lanport-create",

+        "xml": "<method rpc='sdwan-vf-operation-lanport-create' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 285,

+        "y": 241.99999237060547,

+        "z": "be7b9c9c.26b5d",

+        "wires": [

+            [

+                "72bd87e4.7210f8"

+            ]

+        ]

+    },

+    {

+        "id": "72bd87e4.7210f8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 444.99999237060547,

+        "y": 374.9999885559082,

+        "z": "be7b9c9c.26b5d",

+        "wires": [

+            [

+                "fa08bbfd.f36978",

+                "662c5c91.bf14f4",

+                "3a8662b6.7187de",

+                "d0f313c6.a0ddd",

+                "87f25b72.4b1968",

+                "c96f1257.64bf8",

+                "9ca9880e.f474f8",

+                "23949443.ee4acc",

+                "64302671.d03c08",

+                "305a60f0.cd87a",

+                "17d1be09.26b4d2",

+                "8ab4415a.f464b",

+                "b65f8656.be0f98",

+                "8944476b.d5f828"

+            ]

+        ]

+    },

+    {

+        "id": "78ad706e.d12e1",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 286,

+        "y": 141.99999237060547,

+        "z": "be7b9c9c.26b5d",

+        "wires": [

+            [

+                "3d343d97.916e12"

+            ]

+        ]

+    },

+    {

+        "id": "7c5370ed.0ab17",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 115.5,

+        "y": 53,

+        "z": "be7b9c9c.26b5d",

+        "wires": [

+            [

+                "78ad706e.d12e1"

+            ]

+        ]

+    },

+    {

+        "id": "fa08bbfd.f36978",

+        "type": "for",

+        "name": "for loop idx - VF input parameters",

+        "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 791.2501525878906,

+        "y": 357.66665744781494,

+        "z": "be7b9c9c.26b5d",

+        "wires": [

+            [

+                "c93f649f.0099c8"

+            ]

+        ]

+    },

+    {

+        "id": "c93f649f.0099c8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1006.0284957885742,

+        "y": 355.22224140167236,

+        "z": "be7b9c9c.26b5d",

+        "wires": [

+            [

+                "8f744d78.f7a31",

+                "7468dc64.d34424"

+            ]

+        ]

+    },

+    {

+        "id": "8f744d78.f7a31",

+        "type": "execute",

+        "name": "execute split parameterName",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>\n<parameter name=\"regex\" value=\"_\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"param-prefix\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1202.2846984863281,

+        "y": 332.97037982940674,

+        "z": "be7b9c9c.26b5d",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7468dc64.d34424",

+        "type": "set",

+        "name": "set parameterName",

+        "xml": "<set>\n<parameter name=\"`vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`\" value='`$param-prefix[$param-prefix_length -1]`'/>\n",

+        "comments": "",

+        "x": 1171.7291259765625,

+        "y": 369.97049617767334,

+        "z": "be7b9c9c.26b5d",

+        "wires": []

+    },

+    {

+        "id": "143889df.349216",

+        "type": "comment",

+        "name": "Take the parameter names by removing prefix",

+        "info": "",

+        "comments": "",

+        "x": 829.2503547668457,

+        "y": 314.3333249092102,

+        "z": "be7b9c9c.26b5d",

+        "wires": []

+    },

+    {

+        "id": "3a8662b6.7187de",

+        "type": "set",

+        "name": "set new vf-module_length",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index + 1`' />",

+        "comments": "",

+        "x": 770.186767578125,

+        "y": 516.1629304885864,

+        "z": "be7b9c9c.26b5d",

+        "wires": []

+    },

+    {

+        "id": "662c5c91.bf14f4",

+        "type": "set",

+        "name": "set vf-module-request-input.",

+        "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />\n",

+        "comments": "",

+        "x": 770.1862945556641,

+        "y": 462.15421867370605,

+        "z": "be7b9c9c.26b5d",

+        "wires": []

+    },

+    {

+        "id": "64302671.d03c08",

+        "type": "set",

+        "name": "copy input data to service data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-id' value='`$prop.lan-vf-index`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vnf-information.' value='`$vf-module-topology-operation-input.vnf-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />\n\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-topology.' value='`$tmp.vf-module-topology.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index+1`' />\n",

+        "comments": "",

+        "x": 782.3531112670898,

+        "y": 624.3335423469543,

+        "z": "be7b9c9c.26b5d",

+        "wires": []

+    },

+    {

+        "id": "23949443.ee4acc",

+        "type": "execute",

+        "name": "execute generate-vf-module-index",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.lan-vf-index\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 794.6866760253906,

+        "y": 570.0002617835999,

+        "z": "be7b9c9c.26b5d",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "305a60f0.cd87a",

+        "type": "set",

+        "name": "set vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",

+        "comments": "",

+        "x": 770.500036239624,

+        "y": 675.8373885154724,

+        "z": "be7b9c9c.26b5d",

+        "wires": []

+    },

+    {

+        "id": "17d1be09.26b4d2",

+        "type": "set",

+        "name": "set vf-module-level-oper-status",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.order-status'  value='Created' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />",

+        "comments": "",

+        "x": 785.0000953674316,

+        "y": 725.837281703949,

+        "z": "be7b9c9c.26b5d",

+        "wires": []

+    },

+    {

+        "id": "8ab4415a.f464b",

+        "type": "save",

+        "name": "save sdwan lan-port-config resource in AAI",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='lan-port-config' \n      key='lan-port-config.lan-port-config-id = $prop.lan-vf-index' >\n<parameter name=\"lan-port-config-id\" value=\"`$prop.vnf-index`\" />\n<parameter name=\"device-id\" value=\"`$prop.lan.deviceName`\" />\n<parameter name=\"port-switch\" value=\"`$prop.lan.portSwitch`\" />\n<parameter name=\"port-type\" value=\"`$prop.lan.portType`\" />\n<parameter name=\"port-number\" value=\"`$prop.lan.portnumber`\" />\n<parameter name=\"ipv4-address\" value=\"`$prop.lan.ipAddress`\" />\n<parameter name='vlan-tag' value=\"`$prop.lan.vlanId`\" />\n<parameter name='operational-status' value='Created' />\n<parameter name='model-customization-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />\n<parameter name='selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vf-module-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $service-data.vnfs.vnf[$vnf-index].vnf-id  + '/vnf-data/vf-modules/vf-module/' + $prop.site-vf-index + '/vf-module-data/'` \" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 817.5000152587891,

+        "y": 766.3373422622681,

+        "z": "be7b9c9c.26b5d",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b65f8656.be0f98",

+        "type": "save",

+        "name": "save service relationship in AAI",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='generic-vnf:relationship-list' \n      key='generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"sdwan-vpn\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/sdwan-vpns/sdwan-vpn/' + $prop.lan-vf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"lan-port-config-id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.lan-vf-index`\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 785.4999313354492,

+        "y": 815.3373589515686,

+        "z": "be7b9c9c.26b5d",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "8944476b.d5f828",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 736.2224769592285,

+        "y": 862.5112180709839,

+        "z": "be7b9c9c.26b5d",

+        "wires": []

+    },

+    {

+        "id": "87f25b72.4b1968",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 729,

+        "y": 165.99999713897705,

+        "z": "be7b9c9c.26b5d",

+        "wires": [

+            [

+                "e80313cd.820e4"

+            ]

+        ]

+    },

+    {

+        "id": "e80313cd.820e4",

+        "type": "switchNode",

+        "name": "switch this vnf-id == input vnf-id",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\">    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 981.0000915527344,

+        "y": 164.6666603088379,

+        "z": "be7b9c9c.26b5d",

+        "wires": [

+            [

+                "b80badb7.d9753"

+            ]

+        ]

+    },

+    {

+        "id": "8bc04fc8.d6a11",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1352.6665802001953,

+        "y": 166.66666316986084,

+        "z": "be7b9c9c.26b5d",

+        "wires": []

+    },

+    {

+        "id": "b80badb7.d9753",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1199.333408355713,

+        "y": 166.66664218902588,

+        "z": "be7b9c9c.26b5d",

+        "wires": [

+            [

+                "8bc04fc8.d6a11"

+            ]

+        ]

+    },

+    {

+        "id": "d0f313c6.a0ddd",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 743.4205932617188,

+        "y": 121.50386619567871,

+        "z": "be7b9c9c.26b5d",

+        "wires": [

+            [

+                "7ab34e25.1cd4e"

+            ]

+        ]

+    },

+    {

+        "id": "7ab34e25.1cd4e",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 930.087272644043,

+        "y": 120.8371639251709,

+        "z": "be7b9c9c.26b5d",

+        "wires": [

+            [

+                "984b3a64.7e1a38"

+            ]

+        ]

+    },

+    {

+        "id": "984b3a64.7e1a38",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n    <parameter name=\"error-message\" value=\"There are no VNFs in MD-SAL\" />\n",

+        "comments": "",

+        "x": 1111.7538986206055,

+        "y": 120.8371639251709,

+        "z": "be7b9c9c.26b5d",

+        "wires": []

+    },

+    {

+        "id": "c96f1257.64bf8",

+        "type": "switchNode",

+        "name": "switch vf-modules.vf-module_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 784.6705827713013,

+        "y": 241.50386714935303,

+        "z": "be7b9c9c.26b5d",

+        "wires": [

+            [

+                "ab6c63f4.e55a6",

+                "14b85aee.617c65"

+            ]

+        ]

+    },

+    {

+        "id": "ab6c63f4.e55a6",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1015.6705932617188,

+        "y": 217.50386428833008,

+        "z": "be7b9c9c.26b5d",

+        "wires": [

+            [

+                "342d6918.bdf256"

+            ]

+        ]

+    },

+    {

+        "id": "14b85aee.617c65",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1015.6705932617188,

+        "y": 257.5038642883301,

+        "z": "be7b9c9c.26b5d",

+        "wires": [

+            [

+                "eedb45d.e2420b8"

+            ]

+        ]

+    },

+    {

+        "id": "342d6918.bdf256",

+        "type": "set",

+        "name": "set vf-index",

+        "xml": "<set>\n<parameter name='vf-index' value='0' />\n",

+        "comments": "",

+        "x": 1158.1705932617188,

+        "y": 217.50386428833008,

+        "z": "be7b9c9c.26b5d",

+        "wires": []

+    },

+    {

+        "id": "eedb45d.e2420b8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1160.0276374816895,

+        "y": 257.4403762817383,

+        "z": "be7b9c9c.26b5d",

+        "wires": [

+            [

+                "a00dcbbe.533a58",

+                "7019e496.422f8c"

+            ]

+        ]

+    },

+    {

+        "id": "7019e496.422f8c",

+        "type": "set",

+        "name": "set vf-index",

+        "xml": "<set>\n<parameter name='vf-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n\n",

+        "comments": "",

+        "x": 1312.7261123657227,

+        "y": 227.05947497440502,

+        "z": "be7b9c9c.26b5d",

+        "wires": []

+    },

+    {

+        "id": "a00dcbbe.533a58",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-index`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1369.1546173095703,

+        "y": 280.2816047668457,

+        "z": "be7b9c9c.26b5d",

+        "wires": [

+            [

+                "19e6409a.9c554f"

+            ]

+        ]

+    },

+    {

+        "id": "f530bc4a.54c5c",

+        "type": "comment",

+        "name": "make sure this network doesn't exist already",

+        "info": "",

+        "comments": "",

+        "x": 1592.805347442627,

+        "y": 238.53566217422485,

+        "z": "be7b9c9c.26b5d",

+        "wires": []

+    },

+    {

+        "id": "19e6409a.9c554f",

+        "type": "switchNode",

+        "name": "switch vf-module-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1644.4403381347656,

+        "y": 279.8531074523926,

+        "z": "be7b9c9c.26b5d",

+        "wires": [

+            [

+                "24af0b91.ce5344"

+            ]

+        ]

+    },

+    {

+        "id": "24af0b91.ce5344",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1545.1705360412598,

+        "y": 338.4245386123657,

+        "z": "be7b9c9c.26b5d",

+        "wires": [

+            [

+                "bf4e4104.4edb"

+            ]

+        ]

+    },

+    {

+        "id": "bf4e4104.4edb",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id already found in service-data\" />\n",

+        "comments": "",

+        "x": 1692.920639038086,

+        "y": 338.28173068119213,

+        "z": "be7b9c9c.26b5d",

+        "wires": []

+    },

+    {

+        "id": "9ca9880e.f474f8",

+        "type": "call",

+        "name": "call sdwan-get-vf-module-lanport-param",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-lanport-param' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 804.0000152587891,

+        "y": 408.99999809265137,

+        "z": "be7b9c9c.26b5d",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-deactivate.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-deactivate.json
new file mode 100644
index 0000000..cb28863
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-deactivate.json
@@ -0,0 +1,1847 @@
+[

+    {

+        "id": "3eaead5d.8a50e2",

+        "type": "method",

+        "name": "method sdwan-vf-operation-lanport-deactivate",

+        "xml": "<method rpc='sdwan-vf-operation-lanport-deactivate' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 252,

+        "y": 208,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "de2de50e.7db098"

+            ]

+        ]

+    },

+    {

+        "id": "ba6ca55d.d04268",

+        "type": "switchNode",

+        "name": "switch vf-modules.vf-module_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 634.0000076293945,

+        "y": 359.4136486053467,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "96bd0da6.6b228",

+                "d7d04d79.b116e",

+                "bcfd0c5e.e6103"

+            ]

+        ]

+    },

+    {

+        "id": "996651b.9ec83b",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 171.00000381469727,

+        "y": 50.413658142089844,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "509643c7.891eac"

+            ]

+        ]

+    },

+    {

+        "id": "509643c7.891eac",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 240.28570556640625,

+        "y": 113.65176773071289,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "3eaead5d.8a50e2"

+            ]

+        ]

+    },

+    {

+        "id": "de2de50e.7db098",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 252.6666717529297,

+        "y": 464.08036708831787,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "cd5d97be.4098b8",

+                "cc768085.ce4bc",

+                "ba6ca55d.d04268",

+                "582a5dfb.dfaf24",

+                "6331828e.70aa2c",

+                "60ca269e.96d878",

+                "ba5b2145.40753",

+                "d3ab3217.7d57a",

+                "58afb0e4.ba7df",

+                "2ee3209f.a1bb9",

+                "bfac8597.a517f8",

+                "b282b047.e838d",

+                "89ba2ad0.277798",

+                "e99d476c.3f3ac8",

+                "81163bc0.74e178",

+                "e8785c39.cc512",

+                "86da8112.f0417",

+                "2b5c8466.72828c",

+                "6c0bf23f.5303ac",

+                "16e6f83a.5e7ff8"

+            ]

+        ]

+    },

+    {

+        "id": "cc768085.ce4bc",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 578.0313873291016,

+        "y": 287.6828079223633,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "9776f320.0567"

+            ]

+        ]

+    },

+    {

+        "id": "cd5d97be.4098b8",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 589.0000190734863,

+        "y": 226.41366863250732,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "2debc059.5aa7"

+            ]

+        ]

+    },

+    {

+        "id": "2debc059.5aa7",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 769,

+        "y": 225.41365814208984,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "355351ee.f9153e"

+            ]

+        ]

+    },

+    {

+        "id": "355351ee.f9153e",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 918.4287261962891,

+        "y": 226.55657577514648,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "9776f320.0567",

+        "type": "switchNode",

+        "name": "switch this vnf-id == input vnf-id",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\">    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 807.0000152587891,

+        "y": 288.4136643409729,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "f97986b6.bf7158"

+            ]

+        ]

+    },

+    {

+        "id": "f97986b6.bf7158",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1022,

+        "y": 286.41365814208984,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "926d8df9.33314"

+            ]

+        ]

+    },

+    {

+        "id": "926d8df9.33314",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1186,

+        "y": 281.41365814208984,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "d7d04d79.b116e",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 856,

+        "y": 393.41365814208984,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "511ce89.f44bb18"

+            ]

+        ]

+    },

+    {

+        "id": "96bd0da6.6b228",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 860.9999961853027,

+        "y": 340.4136571884155,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "511ce89.f44bb18"

+            ]

+        ]

+    },

+    {

+        "id": "511ce89.f44bb18",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 1019,

+        "y": 353.41365814208984,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "bcfd0c5e.e6103",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 856,

+        "y": 454.41365814208984,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "b8a34756.728a58"

+            ]

+        ]

+    },

+    {

+        "id": "af4bd42d.9f4868",

+        "type": "set",

+        "name": "set vf-module_length",

+        "xml": "<set>\n<parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n",

+        "comments": "",

+        "x": 1210.000015258789,

+        "y": 452.4136720895767,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "b8a34756.728a58",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1017.0000457763672,

+        "y": 451.413649559021,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "af4bd42d.9f4868",

+                "69a184fd.28972c"

+            ]

+        ]

+    },

+    {

+        "id": "69a184fd.28972c",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1229.0000305175781,

+        "y": 501.41367053985596,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "72e39d48.4f8944"

+            ]

+        ]

+    },

+    {

+        "id": "72e39d48.4f8944",

+        "type": "switchNode",

+        "name": "switch vf-module-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1472,

+        "y": 500.41365814208984,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "5f38c3e.5d3ce3c"

+            ]

+        ]

+    },

+    {

+        "id": "5f38c3e.5d3ce3c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1670.0000286102295,

+        "y": 487.41366481781006,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "92d909cb.ff6d68"

+            ]

+        ]

+    },

+    {

+        "id": "92d909cb.ff6d68",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1822,

+        "y": 489.41365814208984,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "4dec85b6.3eab5c",

+                "e85d666e.e8adc8",

+                "15a9af4c.a7f031"

+            ]

+        ]

+    },

+    {

+        "id": "4dec85b6.3eab5c",

+        "type": "set",

+        "name": "set tmp.vidx and ctx.vnf-data",

+        "xml": "<set>\n<parameter name='tmp.vidx' value='`$idx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />\n",

+        "comments": "",

+        "x": 2050.000114440918,

+        "y": 431.4136619567871,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "e85d666e.e8adc8",

+        "type": "set",

+        "name": "set vf-module-request-input.",

+        "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />\n\n",

+        "comments": "",

+        "x": 2054.000114440918,

+        "y": 485.4136619567871,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "582a5dfb.dfaf24",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 553.0002136230469,

+        "y": 1926.9149341583252,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "15a9af4c.a7f031",

+        "type": "call",

+        "name": "call sdwan-get-vf-module-lanport-param",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-lanport-param' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2084.4551391601562,

+        "y": 536.4241542816162,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "1adddcaf.a133d3",

+        "type": "for",

+        "name": "for vf-modules.vf-module_length",

+        "xml": "<for index='vfidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 891.2540740966797,

+        "y": 541.4176807403564,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "8d8ac8b6.f23b18"

+            ]

+        ]

+    },

+    {

+        "id": "cc689d86.6d6b1",

+        "type": "switchNode",

+        "name": "switch this deviceName == vf-input",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value == '$prop.lan.deviceName'`\">\n    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1164.2543182373047,

+        "y": 627.417786359787,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "ec201f5b.98b55"

+            ]

+        ]

+    },

+    {

+        "id": "8d8ac8b6.f23b18",

+        "type": "for",

+        "name": "for vf-module-input-param length",

+        "xml": "<for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1189.2539901733398,

+        "y": 544.4177227020264,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "cc689d86.6d6b1"

+            ]

+        ]

+    },

+    {

+        "id": "ec201f5b.98b55",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1378.2541313171387,

+        "y": 624.4177711009979,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "137ad5db.05e33a"

+            ]

+        ]

+    },

+    {

+        "id": "42b7ec46.f75e94",

+        "type": "for",

+        "name": "for vf-modules.vf-module_length",

+        "xml": "<for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1767.254322052002,

+        "y": 621.4179258346558,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "6fa7e982.f0f398"

+            ]

+        ]

+    },

+    {

+        "id": "6fa7e982.f0f398",

+        "type": "switchNode",

+        "name": "switch deviceId == input vf-id",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'deviceId'`\">\n    \n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2059.2542114257812,

+        "y": 622.4178848266602,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "a93d7d08.b19f3"

+            ]

+        ]

+    },

+    {

+        "id": "a93d7d08.b19f3",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2258.254379272461,

+        "y": 620.4178848266602,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "8ce50095.7309f"

+            ]

+        ]

+    },

+    {

+        "id": "8ce50095.7309f",

+        "type": "set",

+        "name": "set prop.lan.deviceId",

+        "xml": "<set>\n<parameter name='prop.lan.deviceId' value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />\n",

+        "comments": "",

+        "x": 2431.254383087158,

+        "y": 620.4179258346558,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "6331828e.70aa2c",

+        "type": "for",

+        "name": "for service-data.vnfs.vnf_length",

+        "xml": "<for index='vnfidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 637.2539215087891,

+        "y": 476.4176778793335,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "1adddcaf.a133d3"

+            ]

+        ]

+    },

+    {

+        "id": "125425fb.ef4bfa",

+        "type": "switchNode",

+        "name": "switch ActivateSDWANSiteInstance",

+        "xml": "<!--switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action == 'ActivateSDWANSiteInstance'`\"-->\n<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action == 'ActivateSiteInstance'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1232.0042877197266,

+        "y": 748.417646408081,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "7336ac27.633e24"

+            ]

+        ]

+    },

+    {

+        "id": "38f21693.f6208a",

+        "type": "for",

+        "name": "for vf-modules.vf-module_length",

+        "xml": "<for index='vfidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 765.0041732788086,

+        "y": 819.4176635742188,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "e28cdf4a.09f99"

+            ]

+        ]

+    },

+    {

+        "id": "58afb0e4.ba7df",

+        "type": "for",

+        "name": "for service-data.vnfs.vnf_length",

+        "xml": "<for index='vnfidx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 629.0039825439453,

+        "y": 646.4175662994385,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "74d2892.3a20c78"

+            ]

+        ]

+    },

+    {

+        "id": "7336ac27.633e24",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1454.0042037963867,

+        "y": 748.4177279472351,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "6d31748d.e3c9bc"

+            ]

+        ]

+    },

+    {

+        "id": "6d31748d.e3c9bc",

+        "type": "for",

+        "name": "for vf-modules.vf-module_length",

+        "xml": "<for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1535.2542114257812,

+        "y": 822.9177293777466,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "7cb6a87.6e3f758"

+            ]

+        ]

+    },

+    {

+        "id": "1008121d.0f833e",

+        "type": "switchNode",

+        "name": "switch siteId",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'siteId'`\">\n    \n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1918.2545700073242,

+        "y": 829.9178366661072,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "7c572003.6098f"

+            ]

+        ]

+    },

+    {

+        "id": "7c572003.6098f",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2095.2545890808105,

+        "y": 832.9176769256592,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "8daf5324.de268"

+            ]

+        ]

+    },

+    {

+        "id": "63cd961f.c156c8",

+        "type": "set",

+        "name": "set prop.attach.siteId",

+        "xml": "<set>\n<parameter name='prop.attach.siteId' value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />\n",

+        "comments": "",

+        "x": 2479.255096435547,

+        "y": 806.9177284240723,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "8daf5324.de268",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2254.504779815674,

+        "y": 828.4177169799805,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "63cd961f.c156c8",

+                "4f58a0f5.56037",

+                "975b7faf.1862a"

+            ]

+        ]

+    },

+    {

+        "id": "89ba2ad0.277798",

+        "type": "get-resource",

+        "name": "get-resource esr-thirdparty-sdnc",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 590.0039291381836,

+        "y": 965.9176549911499,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "2d233c53.3f6be4",

+                "f1938aaa.240958",

+                "46bd4734.d48208"

+            ]

+        ]

+    },

+    {

+        "id": "2d233c53.3f6be4",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 834.0039901733398,

+        "y": 929.9176549911499,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "157032ce.bbb88d"

+            ]

+        ]

+    },

+    {

+        "id": "f1938aaa.240958",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 836.494873046875,

+        "y": 965.4916915893555,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "4af9366b.00d608"

+            ]

+        ]

+    },

+    {

+        "id": "46bd4734.d48208",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 831.827880859375,

+        "y": 1001.8250503540039,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "3961a91d.651c56"

+            ]

+        ]

+    },

+    {

+        "id": "3961a91d.651c56",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",

+        "comments": "",

+        "x": 985.6003723144531,

+        "y": 999.2641372680664,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "4af9366b.00d608",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",

+        "comments": "",

+        "x": 982.0662689208984,

+        "y": 963.7773790359497,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "157032ce.bbb88d",

+        "type": "set",

+        "name": "set controller data",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",

+        "comments": "",

+        "x": 994.5041007995605,

+        "y": 927.917594909668,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "e99d476c.3f3ac8",

+        "type": "execute",

+        "name": "execute RestApiCallNode Get token",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 603.9421615600586,

+        "y": 1069.03874874115,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "e801e029.f1d5a",

+                "8d93013.82561"

+            ]

+        ]

+    },

+    {

+        "id": "e801e029.f1d5a",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 838.9422874450684,

+        "y": 1055.038737297058,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "aaae6df9.4c056"

+            ]

+        ]

+    },

+    {

+        "id": "8d93013.82561",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 838.1922874450684,

+        "y": 1090.6816444396973,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "5e0c2f7e.4b122"

+            ]

+        ]

+    },

+    {

+        "id": "5e0c2f7e.4b122",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing get token rest api\" />\n",

+        "comments": "",

+        "x": 986.9422950744629,

+        "y": 1091.4317264556885,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "aaae6df9.4c056",

+        "type": "set",

+        "name": "set token-id",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",

+        "comments": "",

+        "x": 980.9422950744629,

+        "y": 1054.0387382507324,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "e8785c39.cc512",

+        "type": "execute",

+        "name": "execute RestApiCallNode device port delete",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdlan-port-del.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports/action/batch-delete'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"portResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 630.0312576293945,

+        "y": 1220.4918870925903,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "552b4230.a57a2c",

+                "a21ab43e.f1ce68"

+            ]

+        ]

+    },

+    {

+        "id": "552b4230.a57a2c",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 879.0313167572021,

+        "y": 1234.4920930862427,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "d1a4e04e.60501"

+            ]

+        ]

+    },

+    {

+        "id": "a21ab43e.f1ce68",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 879.0313167572021,

+        "y": 1196.491928577423,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "54a6d547.da0aec"

+            ]

+        ]

+    },

+    {

+        "id": "54a6d547.da0aec",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create device port rest api\" />\n",

+        "comments": "",

+        "x": 1023.0316505432129,

+        "y": 1195.491928100586,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "d1a4e04e.60501",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1026.031328201294,

+        "y": 1235.4919319152832,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c5c8c91e.ca8b48",

+        "type": "comment",

+        "name": "Delete port",

+        "info": "",

+        "comments": "",

+        "x": 531.6971969604492,

+        "y": 1186.9359111785889,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "81163bc0.74e178",

+        "type": "call",

+        "name": "call sdwan-get-tenant-auth",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 578.6971969604492,

+        "y": 1135.6023473739624,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a939bddc.25a0a",

+        "type": "execute",

+        "name": "execute RestApiCallNode bridge domain create",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdlan-bridge-domain.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/bridge-domains'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"bridgeDomainResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1052.6815071105957,

+        "y": 1315.6025159358978,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "991e6562.cad008",

+                "a675752c.fef5c8"

+            ]

+        ]

+    },

+    {

+        "id": "991e6562.cad008",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1373.6815338134766,

+        "y": 1332.6028363704681,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "fb3cfb9f.764a18"

+            ]

+        ]

+    },

+    {

+        "id": "a675752c.fef5c8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1376.6815605163574,

+        "y": 1297.6026179790497,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "92f1575b.a1bfb8"

+            ]

+        ]

+    },

+    {

+        "id": "92f1575b.a1bfb8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create bridge domain rest api\" />\n",

+        "comments": "",

+        "x": 1579.6819496154785,

+        "y": 1293.6027252674103,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "fb3cfb9f.764a18",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1580.6815147399902,

+        "y": 1328.602591753006,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d50d1b79.abf9a8",

+        "type": "comment",

+        "name": "Create bridge domain",

+        "info": "",

+        "comments": "",

+        "x": 996.3474006652832,

+        "y": 1282.0467417240143,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "60ca269e.96d878",

+        "type": "switchNode",

+        "name": "switch portSwitch",

+        "xml": "<switch test=\"`$prop.lan.portSwitch == 'layer2-port'`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 561.4590759277344,

+        "y": 1331.2692050933838,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "13b85938.8b9cd7"

+            ]

+        ]

+    },

+    {

+        "id": "13b85938.8b9cd7",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 749.4590034484863,

+        "y": 1329.3805322647095,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "a939bddc.25a0a"

+            ]

+        ]

+    },

+    {

+        "id": "ba5b2145.40753",

+        "type": "execute",

+        "name": "execute split ip and mask",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.lan.ipAddress`'/>\n<parameter name=\"regex\" value=\"/\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"ipandMask\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 577.0039672851562,

+        "y": 1417.1676979064941,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "575235a2.fb9bbc",

+                "3c20212c.49fade"

+            ]

+        ]

+    },

+    {

+        "id": "3c20212c.49fade",

+        "type": "failure",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 778.0039863586426,

+        "y": 1395.1676893234253,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "bdf015ad.4678f8"

+            ]

+        ]

+    },

+    {

+        "id": "575235a2.fb9bbc",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 778.0039901733398,

+        "y": 1436.1676931381226,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "133c89f4.2a7c76"

+            ]

+        ]

+    },

+    {

+        "id": "bdf015ad.4678f8",

+        "type": "set",

+        "name": "set ipAddress prefixLength",

+        "xml": "<set>\n<parameter name='prop.lan.ip-address' value='`$ipandMask[0]`' />\n<parameter name='prop.lan.prefixLength' value='`$ipandMask[1]`' />",

+        "comments": "",

+        "x": 975.0040054321289,

+        "y": 1393.1676893234253,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "133c89f4.2a7c76",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value=\"An error occured while splitting sna1_route\" />\n",

+        "comments": "",

+        "x": 933.0039978027344,

+        "y": 1433.1676921844482,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "372eb63a.83ff6a",

+        "type": "comment",

+        "name": "TODO: split ip/mask",

+        "info": "",

+        "comments": "",

+        "x": 974.0136375427246,

+        "y": 1355.3479614257812,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "86da8112.f0417",

+        "type": "execute",

+        "name": "execute RestApiCallNode IPSubnets delete",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdlan-ip-subnets-del.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/ip-subnets/action/batch-delete'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"lanPortResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 635.7753372192383,

+        "y": 1493.2885875701904,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "15bd3770.c63fa9",

+                "248a192b.d86396"

+            ]

+        ]

+    },

+    {

+        "id": "248a192b.d86396",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 904.7753677368164,

+        "y": 1480.2885599136353,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "616ee6f.3d9a718"

+            ]

+        ]

+    },

+    {

+        "id": "15bd3770.c63fa9",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 901.7753410339355,

+        "y": 1515.2887783050537,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "40c5dea7.9b57"

+            ]

+        ]

+    },

+    {

+        "id": "616ee6f.3d9a718",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create device port rest api\" />\n",

+        "comments": "",

+        "x": 1057.775749206543,

+        "y": 1476.2887859344482,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "40c5dea7.9b57",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1048.7753219604492,

+        "y": 1516.2885341644287,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "339192eb.51711e"

+            ]

+        ]

+    },

+    {

+        "id": "339192eb.51711e",

+        "type": "set",

+        "name": "set prop.lan.lanPortId",

+        "xml": "<set>\n<parameter name='prop.lan.lanPortId' value='`lanPortResp.success[0].id`' />\n",

+        "comments": "",

+        "x": 1255.6644248962402,

+        "y": 1518.622000694275,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "6c0bf23f.5303ac",

+        "type": "execute",

+        "name": "execute RestApiCallNode create vpn topology",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-vpn-topology.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/' + $prop.vpn1Id + '/topology'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"vpn-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 652.2857360839844,

+        "y": 1651.7474851608276,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "6503000e.7fe09",

+                "f95d774d.951318"

+            ]

+        ]

+    },

+    {

+        "id": "f95d774d.951318",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 898.2856712341309,

+        "y": 1687.7468357086182,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "1f602715.4e71b9"

+            ]

+        ]

+    },

+    {

+        "id": "1f602715.4e71b9",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1070.2856121063232,

+        "y": 1701.7468520402908,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7c916735.dbf778",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create vpn topology failed\" />\n",

+        "comments": "",

+        "x": 1070.2857341766357,

+        "y": 1657.7468520402908,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "6503000e.7fe09",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 902.2855892181396,

+        "y": 1645.7468347549438,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "7c916735.dbf778"

+            ]

+        ]

+    },

+    {

+        "id": "2b5c8466.72828c",

+        "type": "execute",

+        "name": "execute RestApiCallNode create vpn ",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-vpn.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/vpn'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"put\"/>\n<parameter name=\"responsePrefix\" value=\"vpn-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 619.2841186523438,

+        "y": 1585.246587753296,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "593d6e8d.d4036",

+                "22423ed9.18f8e2"

+            ]

+        ]

+    },

+    {

+        "id": "22423ed9.18f8e2",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 844.2840175628662,

+        "y": 1605.246500134468,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "b88f4563.6b6768"

+            ]

+        ]

+    },

+    {

+        "id": "b88f4563.6b6768",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1014.28395652771,

+        "y": 1608.246500134468,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a724847c.2c4088",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create vpn failed\" />\n",

+        "comments": "",

+        "x": 1014.2840785980225,

+        "y": 1564.246500134468,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "593d6e8d.d4036",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 847.28395652771,

+        "y": 1564.246500134468,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "a724847c.2c4088"

+            ]

+        ]

+    },

+    {

+        "id": "1f47d1c3.9d407e",

+        "type": "switchNode",

+        "name": "switch ActivateSDWANVpnInstance",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action == 'ActivateSDWANVpnInstance'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1210.2859420776367,

+        "y": 869.7469148635864,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "6200b940.359218"

+            ]

+        ]

+    },

+    {

+        "id": "e28cdf4a.09f99",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 967.6190452575684,

+        "y": 798.746994972229,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "125425fb.ef4bfa",

+                "1f47d1c3.9d407e",

+                "712ec051.8d2a6"

+            ]

+        ]

+    },

+    {

+        "id": "6200b940.359218",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1305.9524536132812,

+        "y": 943.7469959259033,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "309bb160.fe92de"

+            ]

+        ]

+    },

+    {

+        "id": "309bb160.fe92de",

+        "type": "for",

+        "name": "for vf-modules.vf-module_length",

+        "xml": "<for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1520.2023391723633,

+        "y": 945.2469725608826,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "1ac88e91.8c9681"

+            ]

+        ]

+    },

+    {

+        "id": "1ac88e91.8c9681",

+        "type": "switchNode",

+        "name": "switch vpn-id",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'vpn-id'`\">\n    \n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1767.202377319336,

+        "y": 940.2470555305481,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "3a5e3420.dfdfbc"

+            ]

+        ]

+    },

+    {

+        "id": "3a5e3420.dfdfbc",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1917.9523315429688,

+        "y": 941.7469711303711,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "f542060.75c12f8"

+            ]

+        ]

+    },

+    {

+        "id": "f542060.75c12f8",

+        "type": "set",

+        "name": "set prop.vpn1Id",

+        "xml": "<set>\n<parameter name='prop.vpn1Id' value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />\n",

+        "comments": "",

+        "x": 2091.953079223633,

+        "y": 941.747029542923,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "4f58a0f5.56037",

+        "type": "set",

+        "name": "Add sites to list and update length",

+        "xml": "<set>\n<parameter name='prop.siteIds[$prop.siteIds_length]' value='`$prop.attach.siteId`' />\n<parameter name='prop.siteIds_length' value='`$prop.siteIds_length + 1`' />\n\n\n\n\n\n\n\n\n\n\n\n\n\n",

+        "comments": "",

+        "x": 2522.2864532470703,

+        "y": 847.747029542923,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "975b7faf.1862a",

+        "type": "set",

+        "name": "Add site attachement to list and update length",

+        "xml": "<set>\n<parameter name='prop.siteAttachements[$prop.siteAttachements_length].siteId' value='`$prop.attach.siteId`' />\n<parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles[0]' value='`$prop.role`' />\n<parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles_length' value='1' />\n<parameter name='prop.siteAttachements_length' value='`$prop.siteAttachements_length + 1`' />\n\n\n\n\n\n\n\n\n\n\n\n\n",

+        "comments": "",

+        "x": 2553.286346435547,

+        "y": 890.7469959259033,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "d3ab3217.7d57a",

+        "type": "set",

+        "name": "set prop.siteAttachement_length=0",

+        "xml": "<set>\n<parameter name='prop.siteAttachements_length' value='0' />\n<parameter name='prop.siteIds_length' value='0' />\n\n\n\n",

+        "comments": "",

+        "x": 639.2857208251953,

+        "y": 595.7469882965088,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "7cb6a87.6e3f758",

+        "type": "block",

+        "name": "block atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1752.6193771362305,

+        "y": 823.7469940185547,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "1008121d.0f833e",

+                "38f1f3d9.ea90fc",

+                "65c7e0ab.e924d"

+            ]

+        ]

+    },

+    {

+        "id": "38f1f3d9.ea90fc",

+        "type": "switchNode",

+        "name": "switch role",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'role'`\">\n    \n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1914.9523086547852,

+        "y": 754.7469930648804,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "e4b2cfb7.2be02"

+            ]

+        ]

+    },

+    {

+        "id": "e4b2cfb7.2be02",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2077.9523124694824,

+        "y": 749.7469940185547,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "cbd09e2f.5bc81"

+            ]

+        ]

+    },

+    {

+        "id": "cbd09e2f.5bc81",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2245.9523544311523,

+        "y": 743.746992111206,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "3c601cb.4b2f2e4",

+                "2d319605.7a6e9a"

+            ]

+        ]

+    },

+    {

+        "id": "2d319605.7a6e9a",

+        "type": "switchNode",

+        "name": "switch sd-wan-edge",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value == 'sd-wan-edge'`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2440.9524841308594,

+        "y": 704.7469835281372,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "bb6dcfdd.128fa"

+            ]

+        ]

+    },

+    {

+        "id": "3c601cb.4b2f2e4",

+        "type": "switchNode",

+        "name": "switch dsvpn-hub",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'dsvpn-hub'`\">\n    \n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2437.952590942383,

+        "y": 759.7469990253448,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "b131819c.daa97"

+            ]

+        ]

+    },

+    {

+        "id": "91128780.38fd08",

+        "type": "set",

+        "name": "set spoke role",

+        "xml": "<set>\n<parameter name='prop.role' value=\"spoke\" />\n",

+        "comments": "",

+        "x": 2770.952606201172,

+        "y": 698.7470293045044,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "c4199cad.d68d",

+        "type": "set",

+        "name": "set hub role",

+        "xml": "<set>\n<parameter name='prop.role' value=\"hub\" />\n",

+        "comments": "",

+        "x": 2769.952365875244,

+        "y": 753.747013092041,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "bb6dcfdd.128fa",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2610.9524536132812,

+        "y": 700.4136581420898,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "91128780.38fd08"

+            ]

+        ]

+    },

+    {

+        "id": "b131819c.daa97",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2614.9524536132812,

+        "y": 755.4136581420898,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "c4199cad.d68d"

+            ]

+        ]

+    },

+    {

+        "id": "16e6f83a.5e7ff8",

+        "type": "update",

+        "name": "update SDWAN VPN status to AAI",

+        "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='lan-port-config' \n      key='sdwan-vpn.sdwan-vpn-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >\n<parameter name='sdwan-vpn-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<parameter name='operational-status' value='PendingDelete' />\n<parameter name='lan-port-config-id' value='`$prop.lan-port-config-id`' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 617.3170700073242,

+        "y": 1867.4452047348022,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "65c7e0ab.e924d",

+        "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/svclogic23.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"param-name\"/>\n<parameter name=\"field3\" value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name`'/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1910.3169555664062,

+        "y": 698.9449081420898,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "712ec051.8d2a6",

+        "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/svclogic24.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"request-action\"/>\n<parameter name=\"field3\" value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action`'/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1153.3171730041504,

+        "y": 699.9450273513794,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "500d4c8a.78bee4",

+        "type": "comment",

+        "name": "**revert the changes",

+        "info": "",

+        "comments": "",

+        "x": 1311.316982269287,

+        "y": 704.4449405670166,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "137ad5db.05e33a",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1536.3333740234375,

+        "y": 621.6667051315308,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "42b7ec46.f75e94",

+                "5c976c54.43c564"

+            ]

+        ]

+    },

+    {

+        "id": "5c976c54.43c564",

+        "type": "set",

+        "name": "set prop.vnf-id",

+        "xml": "<set>\n<parameter name='prop.vnf-id' value='`$service-data.vnfs.vnf[$vnfidx].vnf-id`' />\n\n",

+        "comments": "",

+        "x": 1728.0000495910645,

+        "y": 551.6666831970215,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "74d2892.3a20c78",

+        "type": "switchNode",

+        "name": "switch prop.vnf-id match",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnfidx].vnf-id == $prop.vnf-id`\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 886.0003509521484,

+        "y": 673.0000200271606,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "cfdd9f28.400e6"

+            ]

+        ]

+    },

+    {

+        "id": "cfdd9f28.400e6",

+        "type": "outcomeFalse",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 674.0005035400391,

+        "y": 748.0000233650208,

+        "z": "2a0755d2.04892a",

+        "wires": [

+            [

+                "38f21693.f6208a"

+            ]

+        ]

+    },

+    {

+        "id": "fef5106c.cc924",

+        "type": "comment",

+        "name": "if device-name match with the incomming device-name,  sites in this service vnf should not be included",

+        "info": "",

+        "comments": "",

+        "x": 749.0000915527344,

+        "y": 845.0000410079956,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "2ee3209f.a1bb9",

+        "type": "set",

+        "name": "copy input data to service data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n",

+        "comments": "",

+        "x": 605.0000915527344,

+        "y": 1719.6667194366455,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "bfac8597.a517f8",

+        "type": "set",

+        "name": "set vf-module-id and vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",

+        "comments": "",

+        "x": 639.3032913208008,

+        "y": 1763.4698286056519,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    },

+    {

+        "id": "b282b047.e838d",

+        "type": "set",

+        "name": "set vf-module-level-oper-status",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status'  value='PendingDelete' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />",

+        "comments": "",

+        "x": 606.3033180236816,

+        "y": 1816.4698705673218,

+        "z": "2a0755d2.04892a",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-delete.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-delete.json
new file mode 100644
index 0000000..012deec
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-delete.json
@@ -0,0 +1,686 @@
+[

+    {

+        "id": "a54d86da.b0b4c8",

+        "type": "method",

+        "name": "method sdwan-vf-operation-lanport-delete",

+        "xml": "<method rpc='sdwan-vf-operation-lanport-delete' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 234.00000762939453,

+        "y": 230.00012350082397,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "4d4d77e8.c38938"

+            ]

+        ]

+    },

+    {

+        "id": "db831233.33e69",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 222.28571319580078,

+        "y": 130.65188121795654,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "a54d86da.b0b4c8"

+            ]

+        ]

+    },

+    {

+        "id": "62c65238.af2cac",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 143.00000762939453,

+        "y": 68.4137716293335,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "db831233.33e69"

+            ]

+        ]

+    },

+    {

+        "id": "4d4d77e8.c38938",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 250.66670989990234,

+        "y": 459.080491065979,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "26d66719.d43da8",

+                "e7e6cf90.f4145",

+                "2040df5d.c513d",

+                "58084a37.394334",

+                "8cf55d8b.9b86e",

+                "6f98bfc7.8211a",

+                "b57e1a43.a54548",

+                "9d1a9cea.dd56",

+                "49881624.abb0c8",

+                "c5683ab4.530598",

+                "d5b959e7.7e0cc8",

+                "d3e08866.ee2d18"

+            ]

+        ]

+    },

+    {

+        "id": "e7e6cf90.f4145",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 566.0313720703125,

+        "y": 304.6829128265381,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "7275fe1.35167"

+            ]

+        ]

+    },

+    {

+        "id": "26d66719.d43da8",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 571.0000267028809,

+        "y": 243.41378211975098,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "4f7f751d.4ffa8c"

+            ]

+        ]

+    },

+    {

+        "id": "4f7f751d.4ffa8c",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 751.0000076293945,

+        "y": 242.4137716293335,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "b8464fa4.268c7"

+            ]

+        ]

+    },

+    {

+        "id": "b8464fa4.268c7",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 900.4287338256836,

+        "y": 243.55668926239014,

+        "z": "1f04287d.306418",

+        "wires": []

+    },

+    {

+        "id": "7275fe1.35167",

+        "type": "switchNode",

+        "name": "switch this vnf-id == input vnf-id",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\">    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 789.0000228881836,

+        "y": 305.41377782821655,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "2f21af21.529ff"

+            ]

+        ]

+    },

+    {

+        "id": "2f21af21.529ff",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1004.0000076293945,

+        "y": 303.4137716293335,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "a1139d12.89e01"

+            ]

+        ]

+    },

+    {

+        "id": "a1139d12.89e01",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1168.0000076293945,

+        "y": 298.4137716293335,

+        "z": "1f04287d.306418",

+        "wires": []

+    },

+    {

+        "id": "2040df5d.c513d",

+        "type": "switchNode",

+        "name": "switch vf-modules.vf-module_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 637.0000419616699,

+        "y": 381.4137964248657,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "6da138cf.958678",

+                "2a607157.3c86fe",

+                "9b455cd1.ad8b9"

+            ]

+        ]

+    },

+    {

+        "id": "2a607157.3c86fe",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 859.0000343322754,

+        "y": 415.4138059616089,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "9e4075b3.63ff28"

+            ]

+        ]

+    },

+    {

+        "id": "6da138cf.958678",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 864.0000305175781,

+        "y": 362.41380500793457,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "9e4075b3.63ff28"

+            ]

+        ]

+    },

+    {

+        "id": "9e4075b3.63ff28",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 1022.0000343322754,

+        "y": 375.4138059616089,

+        "z": "1f04287d.306418",

+        "wires": []

+    },

+    {

+        "id": "9b455cd1.ad8b9",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 859.0000343322754,

+        "y": 476.4138059616089,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "76d683a5.eebfec"

+            ]

+        ]

+    },

+    {

+        "id": "3f214675.09ba1a",

+        "type": "set",

+        "name": "set vf-module_length",

+        "xml": "<set>\n<parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n",

+        "comments": "",

+        "x": 1213.0000495910645,

+        "y": 474.41381990909576,

+        "z": "1f04287d.306418",

+        "wires": []

+    },

+    {

+        "id": "76d683a5.eebfec",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1020.0000801086426,

+        "y": 473.41379737854004,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "3f214675.09ba1a",

+                "42fcda16.d37964"

+            ]

+        ]

+    },

+    {

+        "id": "42fcda16.d37964",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1232.0000190734863,

+        "y": 527.4137964248657,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "9de7c553.fd25f8"

+            ]

+        ]

+    },

+    {

+        "id": "9de7c553.fd25f8",

+        "type": "switchNode",

+        "name": "switch vf-module-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1503.0000381469727,

+        "y": 528.4138336181641,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "f61f0e52.12de6"

+            ]

+        ]

+    },

+    {

+        "id": "f61f0e52.12de6",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1716.0001621246338,

+        "y": 515.4138031005859,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "cf9e9748.fd3478"

+            ]

+        ]

+    },

+    {

+        "id": "cf9e9748.fd3478",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1868.0001335144043,

+        "y": 517.4137964248657,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "1f23fa4e.25db46",

+                "5446fb0a.a3b5a4",

+                "71d1f1bd.544fb"

+            ]

+        ]

+    },

+    {

+        "id": "1f23fa4e.25db46",

+        "type": "set",

+        "name": "set tmp.vidx and ctx.vnf-data",

+        "xml": "<set>\n<parameter name='tmp.vidx' value='`$idx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />\n",

+        "comments": "",

+        "x": 2090.0001335144043,

+        "y": 513.4137964248657,

+        "z": "1f04287d.306418",

+        "wires": []

+    },

+    {

+        "id": "5446fb0a.a3b5a4",

+        "type": "set",

+        "name": "set vf-module-request-input.",

+        "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />\n\n",

+        "comments": "",

+        "x": 2096.0001335144043,

+        "y": 562.4137964248657,

+        "z": "1f04287d.306418",

+        "wires": []

+    },

+    {

+        "id": "71d1f1bd.544fb",

+        "type": "call",

+        "name": "call sdwan-get-vf-module-lan-param",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-lan-param' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2124.0003547668457,

+        "y": 610.4138021469116,

+        "z": "1f04287d.306418",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "58084a37.394334",

+        "type": "switchNode",

+        "name": "switch tmp.vidx ",

+        "xml": "<switch test=\"`$tmp.vidx`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 576.0312538146973,

+        "y": 554.4298791885376,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "a8fd4f02.a0c39"

+            ]

+        ]

+    },

+    {

+        "id": "a8fd4f02.a0c39",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 723.4598960876465,

+        "y": 554.0012893676758,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "e19c0822.f14e78"

+            ]

+        ]

+    },

+    {

+        "id": "e19c0822.f14e78",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 872.8886222839355,

+        "y": 555.1442070007324,

+        "z": "1f04287d.306418",

+        "wires": []

+    },

+    {

+        "id": "8cf55d8b.9b86e",

+        "type": "switchNode",

+        "name": "switch vf-module-oper-status",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 620.3294143676758,

+        "y": 624.7470846176147,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "56dc0c78.140284",

+                "7bad1343.8cb25c"

+            ]

+        ]

+    },

+    {

+        "id": "56dc0c78.140284",

+        "type": "outcome",

+        "name": "outcome PendingDelete",

+        "xml": "<outcome value='PendingDelete'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 911.1626815795898,

+        "y": 628.8582077026367,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "27edf28.129770e"

+            ]

+        ]

+    },

+    {

+        "id": "7bad1343.8cb25c",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 878.1628189086914,

+        "y": 680.8582603931427,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "ea590f8e.65b32"

+            ]

+        ]

+    },

+    {

+        "id": "ea590f8e.65b32",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'VNF is not in appropriate state for activate. Current state is ' + $service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`\" />",

+        "comments": "",

+        "x": 1037.6625862121582,

+        "y": 683.8582594394684,

+        "z": "1f04287d.306418",

+        "wires": []

+    },

+    {

+        "id": "27edf28.129770e",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1108.469081878662,

+        "y": 639.1833620071411,

+        "z": "1f04287d.306418",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9d1a9cea.dd56",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 591.4406318664551,

+        "y": 1071.635935306549,

+        "z": "1f04287d.306418",

+        "wires": []

+    },

+    {

+        "id": "c5683ab4.530598",

+        "type": "set",

+        "name": "set prop.vnfNewidx",

+        "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`0`' />\n",

+        "comments": "",

+        "x": 598.5272789001465,

+        "y": 695.7472534179688,

+        "z": "1f04287d.306418",

+        "wires": []

+    },

+    {

+        "id": "49881624.abb0c8",

+        "type": "for",

+        "name": "for lidx..service-data.vf-modules.vf-module[]",

+        "xml": "<for index='lidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 674.5271987915039,

+        "y": 749.7471284866333,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "3538a71e.fcff88"

+            ]

+        ]

+    },

+    {

+        "id": "6f98bfc7.8211a",

+        "type": "set",

+        "name": "set new vnf length",

+        "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length\" value='`$prop.vnfidxLen`'/>\n\n\t\n",

+        "comments": "",

+        "x": 598.6285705566406,

+        "y": 802.5513463020325,

+        "z": "1f04287d.306418",

+        "wires": []

+    },

+    {

+        "id": "d5b959e7.7e0cc8",

+        "type": "set",

+        "name": "Remove vnf from ServiceData",

+        "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].\" value=\"\"/>\n",

+        "comments": "",

+        "x": 639.5272369384766,

+        "y": 849.7472591400146,

+        "z": "1f04287d.306418",

+        "wires": []

+    },

+    {

+        "id": "3538a71e.fcff88",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 934.5271892547607,

+        "y": 756.7469882965088,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "10631fee.66247"

+            ]

+        ]

+    },

+    {

+        "id": "d3e08866.ee2d18",

+        "type": "delete",

+        "name": "delete lanport vf instance configuration in AAI",

+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='lan-port-config' \n        key='site-resource.site-resource-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 673.5276069641113,

+        "y": 1019.008641242981,

+        "z": "1f04287d.306418",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "10631fee.66247",

+        "type": "switchNode",

+        "name": "switch vnf-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$lidx].vf-module-data.vf-module-information.vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1120.527256011963,

+        "y": 756.7471489906311,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "5f2f4339.fa3b9c"

+            ]

+        ]

+    },

+    {

+        "id": "5f2f4339.fa3b9c",

+        "type": "outcomeFalse",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1289.5272636413574,

+        "y": 755.7469863891602,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "282bbccf.a76394"

+            ]

+        ]

+    },

+    {

+        "id": "282bbccf.a76394",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1443.527102470398,

+        "y": 747.7469873428345,

+        "z": "1f04287d.306418",

+        "wires": [

+            [

+                "15dd9ec6.9cd7d1",

+                "810eaf7a.70186"

+            ]

+        ]

+    },

+    {

+        "id": "15dd9ec6.9cd7d1",

+        "type": "set",

+        "name": "set  vnf data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-data.`' />\n",

+        "comments": "",

+        "x": 1608.5271978378296,

+        "y": 722.747142791748,

+        "z": "1f04287d.306418",

+        "wires": []

+    },

+    {

+        "id": "810eaf7a.70186",

+        "type": "set",

+        "name": "set prop.vnfNewidx",

+        "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />\n",

+        "comments": "",

+        "x": 1630.5271978378296,

+        "y": 778.747106552124,

+        "z": "1f04287d.306418",

+        "wires": []

+    },

+    {

+        "id": "b57e1a43.a54548",

+        "type": "set",

+        "name": "set vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",

+        "comments": "",

+        "x": 615.3294677734375,

+        "y": 966.0804300308228,

+        "z": "1f04287d.306418",

+        "wires": []

+    },

+    {

+        "id": "eeeb55b5.4909d8",

+        "type": "set",

+        "name": "Remove vnf from ServiceData",

+        "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].\" value=\"\"/>\n",

+        "comments": "",

+        "x": 629.3333129882812,

+        "y": 900,

+        "z": "1f04287d.306418",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-activate.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-activate.json
new file mode 100644
index 0000000..8744128
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-activate.json
@@ -0,0 +1,1231 @@
+[

+    {

+        "id": "a0039ac7.2c7d88",

+        "type": "method",

+        "name": "sdwan-vf-operation-site-activate",

+        "xml": "<method rpc='sdwan-vf-operation-site-activate' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 265.00390625,

+        "y": 238.9999939496629,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "c22d3a60.7ddaa8"

+            ]

+        ]

+    },

+    {

+        "id": "27e9fc06.1c68a4",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 266.00390625,

+        "y": 138.9999939496629,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "a0039ac7.2c7d88"

+            ]

+        ]

+    },

+    {

+        "id": "d5e4bca4.474e7",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 107.50391006469727,

+        "y": 52.999998688697815,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "27e9fc06.1c68a4"

+            ]

+        ]

+    },

+    {

+        "id": "c22d3a60.7ddaa8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 321.00390625,

+        "y": 394.9999939496629,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "f1b7432.96d6cc",

+                "4d30068b.cb8248",

+                "a5fa8ed1.f351a",

+                "81999ef9.7a265",

+                "9e668e87.35152",

+                "c78d235f.ab387",

+                "887e324d.70c37",

+                "bbecde3.6ca5b2",

+                "4023f188.867be",

+                "536ee31e.2dbb9c",

+                "8570b81.0d01d48",

+                "a5bc4e1c.1202d",

+                "d5f9133b.45a0f"

+            ]

+        ]

+    },

+    {

+        "id": "f1b7432.96d6cc",

+        "type": "set",

+        "name": "set prop.site.sdwan false",

+        "xml": "<set>\n<parameter name='prop.site.sdwan' value=\"false\" />\n\n",

+        "comments": "",

+        "x": 712.5078086853027,

+        "y": 178.0039163827896,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "a5fa8ed1.f351a",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 674.0078315734863,

+        "y": 296.00391483306885,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "35074f40.98b9b"

+            ]

+        ]

+    },

+    {

+        "id": "35074f40.98b9b",

+        "type": "switchNode",

+        "name": "switch this vnf-id == input vnf-id",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\">    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 927.0079040527344,

+        "y": 287.67056906223297,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "501cda7c.262744"

+            ]

+        ]

+    },

+    {

+        "id": "58a08191.616f9",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1298.6743927001953,

+        "y": 289.6705719232559,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "501cda7c.262744",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1145.341220855713,

+        "y": 289.67055094242096,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "58a08191.616f9"

+            ]

+        ]

+    },

+    {

+        "id": "4d30068b.cb8248",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 689.4284057617188,

+        "y": 244.5077749490738,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "7bd5f4ce.76777c"

+            ]

+        ]

+    },

+    {

+        "id": "7bd5f4ce.76777c",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 876.095085144043,

+        "y": 243.84107267856598,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "7b0f629c.5a07fc"

+            ]

+        ]

+    },

+    {

+        "id": "7b0f629c.5a07fc",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n    <parameter name=\"error-message\" value=\"There are no VNFs in MD-SAL\" />\n",

+        "comments": "",

+        "x": 1057.7617111206055,

+        "y": 243.84107267856598,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "a81de15.ac0e82",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1328.0078201293945,

+        "y": 459.0038963262923,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "7b05dd5f.af6d94"

+            ]

+        ]

+    },

+    {

+        "id": "25ac2ea9.1fa992",

+        "type": "switchNode",

+        "name": "switch vf-module-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1603.2935409545898,

+        "y": 458.5753990118392,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "ac802e50.23445"

+            ]

+        ]

+    },

+    {

+        "id": "50990900.1946a8",

+        "type": "set",

+        "name": "set vf-module-length",

+        "xml": "<set>\n<parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n\n",

+        "comments": "",

+        "x": 1314.579444885254,

+        "y": 422.781782746315,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "39f64e9a.4cae32",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1118.8808403015137,

+        "y": 436.1626678411849,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "a81de15.ac0e82",

+                "50990900.1946a8",

+                "6433e94c.b18f68"

+            ]

+        ]

+    },

+    {

+        "id": "c412715b.35f49",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 974.523796081543,

+        "y": 436.2261558477767,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "39f64e9a.4cae32"

+            ]

+        ]

+    },

+    {

+        "id": "81999ef9.7a265",

+        "type": "switchNode",

+        "name": "switch vf-modules.vf-module_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 738.523777961731,

+        "y": 363.22616827487946,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "c412715b.35f49",

+                "c7523305.ecaa5",

+                "87107744.973288"

+            ]

+        ]

+    },

+    {

+        "id": "c7523305.ecaa5",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 980.0078144073486,

+        "y": 335.0038973093033,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "c77fefd.df0431"

+            ]

+        ]

+    },

+    {

+        "id": "87107744.973288",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 982.0390033721924,

+        "y": 372.03520834445953,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "c77fefd.df0431"

+            ]

+        ]

+    },

+    {

+        "id": "c77fefd.df0431",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vf-module-operation-input.vf-module-request-input.vf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 1139.8165187835693,

+        "y": 352.9241567850113,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "ac802e50.23445",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1807.0077819824219,

+        "y": 457.003905415535,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "62b8a185.3b8a2"

+            ]

+        ]

+    },

+    {

+        "id": "62b8a185.3b8a2",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1977.3510780334473,

+        "y": 461.0900408029556,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "d0800c3d.a149d",

+                "c55d54ef.05e398",

+                "934abf0d.9c8f4"

+            ]

+        ]

+    },

+    {

+        "id": "d0800c3d.a149d",

+        "type": "set",

+        "name": "set tmp.vidx and ctx.vnf-data",

+        "xml": "<set>\n<parameter name='tmp.vidx' value='`$idx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />\n",

+        "comments": "",

+        "x": 2219.2377700805664,

+        "y": 431.43245470523834,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "c55d54ef.05e398",

+        "type": "set",

+        "name": "set vf-module-request-input.",

+        "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />\n\n",

+        "comments": "",

+        "x": 2222.6840286254883,

+        "y": 476.0900937318802,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "934abf0d.9c8f4",

+        "type": "call",

+        "name": "call sdwan-get-vf-module-site-param",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-site-param' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2252.324935913086,

+        "y": 519.5395450592041,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e56ea967.0d64a8",

+        "type": "switchNode",

+        "name": "switch ActivateSDWANDeviceInstance",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`\">\n    ",

+        "comments": "",

+        "outputs": 1,

+        "x": 1635.5079193115234,

+        "y": 525.0039278268814,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "7a4ace3.f95e93"

+            ]

+        ]

+    },

+    {

+        "id": "7a4ace3.f95e93",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1864.507667541504,

+        "y": 524.0039049386978,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "7ca1b13d.5aea"

+            ]

+        ]

+    },

+    {

+        "id": "7ca1b13d.5aea",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1819.920581817627,

+        "y": 586.0000458955765,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "3b148280.e830fe"

+            ]

+        ]

+    },

+    {

+        "id": "3b148280.e830fe",

+        "type": "for",

+        "name": "for loop deviceidx - Get deviceId from servicedata",

+        "xml": "<for index=\"deviceidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 2101.2543354034424,

+        "y": 596.0000663995743,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "c30dfd09.aeccc"

+            ]

+        ]

+    },

+    {

+        "id": "c30dfd09.aeccc",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2217.254119873047,

+        "y": 647.0002518892288,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "81c39ef4.3376e"

+            ]

+        ]

+    },

+    {

+        "id": "81c39ef4.3376e",

+        "type": "switchNode",

+        "name": "switch deviceId",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].name == 'deviceId'`\">\n    ",

+        "comments": "",

+        "outputs": 1,

+        "x": 2377.2543754577637,

+        "y": 649.0001050233841,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "52222e22.86b7"

+            ]

+        ]

+    },

+    {

+        "id": "52222e22.86b7",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2529.2545471191406,

+        "y": 648.0001050233841,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "86b2a0ab.20409"

+            ]

+        ]

+    },

+    {

+        "id": "86b2a0ab.20409",

+        "type": "set",

+        "name": "set deviceId",

+        "xml": "<set>\n<parameter name='prop.site.deviceId[$prop.site.deviceId_length]' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].value`' />\n<parameter name='prop.site.deviceId_length' value='`$prop.site.deviceId_length + 1`' />\n",

+        "comments": "",

+        "x": 2669.254550933838,

+        "y": 647.6000596284866,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "7b05dd5f.af6d94",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1390.5078125,

+        "y": 504.00390589237213,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "25ac2ea9.1fa992",

+                "e56ea967.0d64a8"

+            ]

+        ]

+    },

+    {

+        "id": "b93cb489.5e32b8",

+        "type": "comment",

+        "name": "Get devices",

+        "info": "",

+        "comments": "",

+        "x": 1627.5078125,

+        "y": 495.00390589237213,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "6433e94c.b18f68",

+        "type": "set",

+        "name": "set prop.site.deviceId_length",

+        "xml": "<set>\n<parameter name='prop.site.deviceId_length' value='0' />\n",

+        "comments": "",

+        "x": 1341.0078125,

+        "y": 387.00390589237213,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "9e668e87.35152",

+        "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%/generic-resource-api-dg.properties' />\n    <parameter name='contextPrefix' value='prop' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 690.0078582763672,

+        "y": 452.00391256809235,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b14da696.802af8",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1486.0043601989746,

+        "y": 868.7539058923721,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "715b60bd.6f62c"

+            ]

+        ]

+    },

+    {

+        "id": "715b60bd.6f62c",

+        "type": "set",

+        "name": "set controller data",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",

+        "comments": "",

+        "x": 1674.5044555664062,

+        "y": 862.7539155483246,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "cda4261b.975c18",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1489.4953269958496,

+        "y": 916.3279415369034,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "5d5ef9c3.e66358"

+            ]

+        ]

+    },

+    {

+        "id": "5d5ef9c3.e66358",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",

+        "comments": "",

+        "x": 1663.066738128662,

+        "y": 904.6136776208878,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "15ce450b.53d72b",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1481.8283348083496,

+        "y": 957.6612545251846,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "10b242b1.35021d"

+            ]

+        ]

+    },

+    {

+        "id": "10b242b1.35021d",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",

+        "comments": "",

+        "x": 1669.6008911132812,

+        "y": 953.1004472970963,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "e838c5da.a148e8",

+        "type": "get-resource",

+        "name": "get-resource esr-thirdparty-sdnc",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1219.0042724609375,

+        "y": 916.7539117336273,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "b14da696.802af8",

+                "cda4261b.975c18",

+                "15ce450b.53d72b"

+            ]

+        ]

+    },

+    {

+        "id": "ef61bc2f.e72cb",

+        "type": "execute",

+        "name": "execute RestApiCallNode Create  SDWAN site",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-site-' + $template.site.role + '.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/sites'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"site-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1246.5043334960938,

+        "y": 1106.7538763284683,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "1bbca445.afcd4c",

+                "dd7810f4.d9827"

+            ]

+        ]

+    },

+    {

+        "id": "4382528a.72cf7c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1662.1709098815918,

+        "y": 1075.642806649208,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e4a16c90.a1073",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create vpn rest api\" />\n",

+        "comments": "",

+        "x": 1647.615493774414,

+        "y": 1135.198154091835,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "dd7810f4.d9827",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1502.615484237671,

+        "y": 1132.1981521844864,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "e4a16c90.a1073"

+            ]

+        ]

+    },

+    {

+        "id": "1bbca445.afcd4c",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1503.0598220825195,

+        "y": 1075.8649603128433,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "4382528a.72cf7c"

+            ]

+        ]

+    },

+    {

+        "id": "28c40fdc.d8ec",

+        "type": "execute",

+        "name": "execute RestApiCallNode Get token",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1220.2583694458008,

+        "y": 1009.7579724788666,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "745b648e.d351dc",

+                "de446705.d7ff98"

+            ]

+        ]

+    },

+    {

+        "id": "745b648e.d351dc",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1485.2582511901855,

+        "y": 994.7578675746918,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "7f55ea12.ac1244"

+            ]

+        ]

+    },

+    {

+        "id": "de446705.d7ff98",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1477.5082511901855,

+        "y": 1036.400750875473,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "a8040204.8ea56"

+            ]

+        ]

+    },

+    {

+        "id": "a8040204.8ea56",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1603.5917472839355,

+        "y": 1036.6467835903168,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7f55ea12.ac1244",

+        "type": "set",

+        "name": "set token-id",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",

+        "comments": "",

+        "x": 1622.2582511901855,

+        "y": 994.7578675746918,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "d0e6b60f.9d8498",

+        "type": "comment",

+        "name": "tmp.thirdparty-sdnc-id is hardcoded value?",

+        "info": "",

+        "comments": "",

+        "x": 1267.508171081543,

+        "y": 870.7578836679459,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "f3e2e0b8.aff3b",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 943.5041809082031,

+        "y": 845.4204959869385,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "fdcbc7bd.a13598",

+                "49ca1a6b.47d2b4",

+                "e838c5da.a148e8",

+                "28c40fdc.d8ec",

+                "e1072ab4.4292c8",

+                "ef61bc2f.e72cb"

+            ]

+        ]

+    },

+    {

+        "id": "fdcbc7bd.a13598",

+        "type": "set",

+        "name": "set siteId",

+        "xml": "<set>\n<parameter name='prop.site.siteId' value=\"\" />\n\n",

+        "comments": "",

+        "x": 1160.5041847229004,

+        "y": 831.753604888916,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "47307892.eb80f8",

+        "type": "for",

+        "name": "for cpidx..prop.site.controlpoints",

+        "xml": "<for index='cpidx' start='0' end='`$prop.site.controlpoints_length`' >\n\t\t\t\t\t\t\t\t\t\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1236.504379272461,

+        "y": 781.7848201990128,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "6433e5be.2bdc0c"

+            ]

+        ]

+    },

+    {

+        "id": "6433e5be.2bdc0c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1443.50390625,

+        "y": 711.7847648859024,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "9d85c0cd.f74a",

+                "6f1b0298.c2014c"

+            ]

+        ]

+    },

+    {

+        "id": "dddca1ae.0aa96",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1885.500316619873,

+        "y": 705.7535845041275,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "5f3e8ab6.51b064"

+            ]

+        ]

+    },

+    {

+        "id": "26937b29.826f14",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1887.7501602172852,

+        "y": 744.3964706659317,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "a5bc087a.7a1fa8"

+            ]

+        ]

+    },

+    {

+        "id": "9d85c0cd.f74a",

+        "type": "set",

+        "name": "set prop.controlPtId",

+        "xml": "<set>\n<parameter name='prop.controlPtId' value='`$prop.site.controlpoints[$cpidx]`' />\n\n",

+        "comments": "",

+        "x": 1632.5000076293945,

+        "y": 684.7535415887833,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "e1072ab4.4292c8",

+        "type": "call",

+        "name": "call sdwan-get-tenant-auth",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1198.7894897460938,

+        "y": 1054.7535101175308,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "49ca1a6b.47d2b4",

+        "type": "switchNode",

+        "name": "switch prop.site.controlpoints ",

+        "xml": "<switch test=\"`$prop.site.controlPoint`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1093.7894897460938,

+        "y": 664.7535101175308,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "1e813b9c.d1bb24",

+                "5e874fed.35cf3"

+            ]

+        ]

+    },

+    {

+        "id": "5e874fed.35cf3",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1281.7894897460938,

+        "y": 686.7535101175308,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "8ca15cae.d821b"

+            ]

+        ]

+    },

+    {

+        "id": "85141f25.2d6e",

+        "type": "comment",

+        "name": "should be null in request",

+        "info": "",

+        "comments": "",

+        "x": 1330.5040740966797,

+        "y": 824.7535778284073,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "8ca15cae.d821b",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1090.7933807373047,

+        "y": 729.7574154138565,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "47307892.eb80f8",

+                "5fd810ad.7ad7a"

+            ]

+        ]

+    },

+    {

+        "id": "5fd810ad.7ad7a",

+        "type": "set",

+        "name": "set template file spoke",

+        "xml": "<set>\n<parameter name='template.site.role' value=\"spoke\" />\n\n",

+        "comments": "",

+        "x": 1269.7933959960938,

+        "y": 748.7574754953384,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "1e813b9c.d1bb24",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1289.7894897460938,

+        "y": 637.7535101175308,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "41d50201.d63e2c"

+            ]

+        ]

+    },

+    {

+        "id": "41d50201.d63e2c",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1427.7894897460938,

+        "y": 639.7535101175308,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "aa5fa9ea.6d1fe8"

+            ]

+        ]

+    },

+    {

+        "id": "aa5fa9ea.6d1fe8",

+        "type": "set",

+        "name": "set template file hub",

+        "xml": "<set>\n<parameter name='template.site.role' value=\"hub\" />\n\n",

+        "comments": "",

+        "x": 1596.7934875488281,

+        "y": 642.7574306726456,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "c26bdc53.ff98c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 775.5039558410645,

+        "y": 825.4201318025589,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "f3e2e0b8.aff3b"

+            ]

+        ]

+    },

+    {

+        "id": "c78d235f.ab387",

+        "type": "switchNode",

+        "name": "switch prop.site.sdwan",

+        "xml": "<switch test=\"`$prop.site.sdwan`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 681.5039215087891,

+        "y": 708.4201065301895,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "c26bdc53.ff98c"

+            ]

+        ]

+    },

+    {

+        "id": "5f3e8ab6.51b064",

+        "type": "set",

+        "name": "set siteId in control point",

+        "xml": "<set>\n<parameter name='prop.site.controlpoints[$cpidx]' value='`$tmp.aai.controlPoints.generated-site-id`' />\n\n",

+        "comments": "",

+        "x": 2064.1666679382324,

+        "y": 706.75370657444,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "a5bc087a.7a1fa8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2028.1665077209473,

+        "y": 742.7535272836685,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "bbecde3.6ca5b2",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 675.5079383850098,

+        "y": 1382.2541280984879,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "887e324d.70c37",

+        "type": "set",

+        "name": "set siteId to service data",

+        "xml": "<set>\n<parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='siteId' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$site-result.success[0].id`' />\n",

+        "comments": "",

+        "x": 713.1783866882324,

+        "y": 1060.9140511751175,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "4023f188.867be",

+        "type": "set",

+        "name": "set vf-module-id and vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",

+        "comments": "",

+        "x": 763.5078964233398,

+        "y": 1211.7539602518082,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "8570b81.0d01d48",

+        "type": "set",

+        "name": "set vf-module-level-oper-status",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status'  value='Active' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />",

+        "comments": "",

+        "x": 729.5078964233398,

+        "y": 1260.2539612054825,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "d5f9133b.45a0f",

+        "type": "update",

+        "name": "update SDWAN VPN status to AAI",

+        "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource' \n      key='site-resource.site-resource-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >\n<parameter name='site-resource-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<parameter name='generated-site-id' value='`$site-result.success[0].id`' /> \n<parameter name='operational-status' value='Active' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 734.6154022216797,

+        "y": 1314.8460041284561,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "536ee31e.2dbb9c",

+        "type": "set",

+        "name": "copy input data in service-data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n",

+        "comments": "",

+        "x": 727.5078506469727,

+        "y": 1164.003914740868,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    },

+    {

+        "id": "6f1b0298.c2014c",

+        "type": "get-resource",

+        "name": "get-resource control pts for sideId",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"site-resource\" \n\t\tkey=\"site-resource.site-resource-name = $prop.controlPtId AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.controlPoints' local-only='false' >\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1670.8334999084473,

+        "y": 748.7536220550537,

+        "z": "85485d1c.bbd62",

+        "wires": [

+            [

+                "dddca1ae.0aa96",

+                "26937b29.826f14"

+            ]

+        ]

+    },

+    {

+        "id": "a5bc4e1c.1202d",

+        "type": "set",

+        "name": "increment param length",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length + 1`' />\n",

+        "comments": "",

+        "x": 717.6667060852051,

+        "y": 1112.6666584014893,

+        "z": "85485d1c.bbd62",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-create.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-create.json
new file mode 100644
index 0000000..833563e
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-create.json
@@ -0,0 +1,531 @@
+[

+    {

+        "id": "39688a3a.06a796",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 265.00390625,

+        "y": 145.999990940094,

+        "z": "5099ec4c.e95b94",

+        "wires": [

+            [

+                "921891f8.416e5"

+            ]

+        ]

+    },

+    {

+        "id": "921891f8.416e5",

+        "type": "method",

+        "name": "sdwan-vf-operation-site-create",

+        "xml": "<method rpc='sdwan-vf-operation-site-create' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 264.00390625,

+        "y": 245.999990940094,

+        "z": "5099ec4c.e95b94",

+        "wires": [

+            [

+                "22a013b4.ab58dc"

+            ]

+        ]

+    },

+    {

+        "id": "695e0384.f33d9c",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 94.50390625,

+        "y": 56.999998569488525,

+        "z": "5099ec4c.e95b94",

+        "wires": [

+            [

+                "39688a3a.06a796"

+            ]

+        ]

+    },

+    {

+        "id": "22a013b4.ab58dc",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 423.00389099121094,

+        "y": 361.99999952316284,

+        "z": "5099ec4c.e95b94",

+        "wires": [

+            [

+                "4325b612.73e1e8",

+                "a6c02374.2dca",

+                "40ba27b5.057bf8",

+                "d6478b6b.a2b888",

+                "59e1bfa3.d11e4",

+                "1c5585c5.9cdc3a",

+                "a7e8dd90.c6661",

+                "2f9ca627.c38e7a",

+                "40436b2a.16f614",

+                "64771e44.2196d",

+                "bb863987.8db5d8",

+                "462de6d9.81f588"

+            ]

+        ]

+    },

+    {

+        "id": "4325b612.73e1e8",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 723.3333129882812,

+        "y": 253.49612379074097,

+        "z": "5099ec4c.e95b94",

+        "wires": [

+            [

+                "63fc0005.8f2ee"

+            ]

+        ]

+    },

+    {

+        "id": "63fc0005.8f2ee",

+        "type": "switchNode",

+        "name": "switch this vnf-id == input vnf-id",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\">    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 975.3334045410156,

+        "y": 252.1627869606018,

+        "z": "5099ec4c.e95b94",

+        "wires": [

+            [

+                "c555201.0223fe"

+            ]

+        ]

+    },

+    {

+        "id": "6fae689f.7fef88",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1346.9998931884766,

+        "y": 254.16278982162476,

+        "z": "5099ec4c.e95b94",

+        "wires": []

+    },

+    {

+        "id": "c555201.0223fe",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1193.6667213439941,

+        "y": 254.1627688407898,

+        "z": "5099ec4c.e95b94",

+        "wires": [

+            [

+                "6fae689f.7fef88"

+            ]

+        ]

+    },

+    {

+        "id": "d6478b6b.a2b888",

+        "type": "for",

+        "name": "for loop idx - VF input parameters",

+        "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 797.2540969848633,

+        "y": 475.6666569709778,

+        "z": "5099ec4c.e95b94",

+        "wires": [

+            [

+                "e10e6c76.58a1d"

+            ]

+        ]

+    },

+    {

+        "id": "e10e6c76.58a1d",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1012.0324401855469,

+        "y": 473.2222409248352,

+        "z": "5099ec4c.e95b94",

+        "wires": [

+            [

+                "9a3f095b.53aca8",

+                "454b0ff.c77c1f"

+            ]

+        ]

+    },

+    {

+        "id": "9a3f095b.53aca8",

+        "type": "execute",

+        "name": "execute split parameterName",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>\n<parameter name=\"regex\" value=\"_\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"param-prefix\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1208.2886428833008,

+        "y": 450.9703793525696,

+        "z": "5099ec4c.e95b94",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "454b0ff.c77c1f",

+        "type": "set",

+        "name": "set parameterName",

+        "xml": "<set>\n<parameter name=\"`vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`\" value='`$param-prefix[$param-prefix_length -1]`'/>\n",

+        "comments": "",

+        "x": 1177.7330703735352,

+        "y": 487.9704957008362,

+        "z": "5099ec4c.e95b94",

+        "wires": []

+    },

+    {

+        "id": "1b7ed90b.0ee057",

+        "type": "comment",

+        "name": "Take the parameter names by removing prefix",

+        "info": "",

+        "comments": "",

+        "x": 1181.2542991638184,

+        "y": 410.33332538604736,

+        "z": "5099ec4c.e95b94",

+        "wires": []

+    },

+    {

+        "id": "a6c02374.2dca",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 737.75390625,

+        "y": 208.99999284744263,

+        "z": "5099ec4c.e95b94",

+        "wires": [

+            [

+                "698329a9.119718"

+            ]

+        ]

+    },

+    {

+        "id": "698329a9.119718",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 924.4205856323242,

+        "y": 208.33329057693481,

+        "z": "5099ec4c.e95b94",

+        "wires": [

+            [

+                "f31a5878.bf4fd8"

+            ]

+        ]

+    },

+    {

+        "id": "f31a5878.bf4fd8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n    <parameter name=\"error-message\" value=\"There are no VNFs in MD-SAL\" />\n",

+        "comments": "",

+        "x": 1106.0872116088867,

+        "y": 208.33329057693481,

+        "z": "5099ec4c.e95b94",

+        "wires": []

+    },

+    {

+        "id": "40ba27b5.057bf8",

+        "type": "switchNode",

+        "name": "switch vf-modules.vf-module_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 779.0038957595825,

+        "y": 328.99999380111694,

+        "z": "5099ec4c.e95b94",

+        "wires": [

+            [

+                "51b4cfc4.d81ec",

+                "9cba331b.ccedc"

+            ]

+        ]

+    },

+    {

+        "id": "51b4cfc4.d81ec",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1010.00390625,

+        "y": 304.999990940094,

+        "z": "5099ec4c.e95b94",

+        "wires": [

+            [

+                "3f2cb9e5.051a76"

+            ]

+        ]

+    },

+    {

+        "id": "9cba331b.ccedc",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1010.00390625,

+        "y": 344.999990940094,

+        "z": "5099ec4c.e95b94",

+        "wires": [

+            [

+                "e0c33286.cb104"

+            ]

+        ]

+    },

+    {

+        "id": "3f2cb9e5.051a76",

+        "type": "set",

+        "name": "set vf-index",

+        "xml": "<set>\n<parameter name='vf-index' value='0' />\n",

+        "comments": "",

+        "x": 1152.50390625,

+        "y": 304.999990940094,

+        "z": "5099ec4c.e95b94",

+        "wires": []

+    },

+    {

+        "id": "e0c33286.cb104",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1154.3609504699707,

+        "y": 344.9365029335022,

+        "z": "5099ec4c.e95b94",

+        "wires": [

+            [

+                "8b8b9efa.275ce",

+                "1791a391.e4fccc"

+            ]

+        ]

+    },

+    {

+        "id": "1791a391.e4fccc",

+        "type": "set",

+        "name": "set vf-index",

+        "xml": "<set>\n<parameter name='vf-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n\n",

+        "comments": "",

+        "x": 1307.059425354004,

+        "y": 314.55560162616894,

+        "z": "5099ec4c.e95b94",

+        "wires": []

+    },

+    {

+        "id": "8b8b9efa.275ce",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-index`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1363.4879302978516,

+        "y": 367.7777314186096,

+        "z": "5099ec4c.e95b94",

+        "wires": [

+            [

+                "aaa91538.94bcc8"

+            ]

+        ]

+    },

+    {

+        "id": "bd3d2242.9164e",

+        "type": "comment",

+        "name": "make sure this network doesn't exist already",

+        "info": "",

+        "comments": "",

+        "x": 1587.1386604309082,

+        "y": 326.03178882598877,

+        "z": "5099ec4c.e95b94",

+        "wires": []

+    },

+    {

+        "id": "aaa91538.94bcc8",

+        "type": "switchNode",

+        "name": "switch vf-module-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1638.7736511230469,

+        "y": 367.3492341041565,

+        "z": "5099ec4c.e95b94",

+        "wires": [

+            [

+                "a84edb80.0d80e8"

+            ]

+        ]

+    },

+    {

+        "id": "a84edb80.0d80e8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1539.503849029541,

+        "y": 425.92066526412964,

+        "z": "5099ec4c.e95b94",

+        "wires": [

+            [

+                "7ca646fd.066d78"

+            ]

+        ]

+    },

+    {

+        "id": "7ca646fd.066d78",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id already found in service-data\" />\n",

+        "comments": "",

+        "x": 1687.2539520263672,

+        "y": 425.77785733295605,

+        "z": "5099ec4c.e95b94",

+        "wires": []

+    },

+    {

+        "id": "40436b2a.16f614",

+        "type": "set",

+        "name": "copy input data to service data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-id' value='`$prop.site-vf-index`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vnf-information.' value='`$vf-module-topology-operation-input.vnf-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />\n\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-topology.' value='`$tmp.vf-module-topology.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index+1`' />\n\n",

+        "comments": "",

+        "x": 790.8571014404297,

+        "y": 755.4962139129639,

+        "z": "5099ec4c.e95b94",

+        "wires": []

+    },

+    {

+        "id": "2f9ca627.c38e7a",

+        "type": "execute",

+        "name": "execute generate-vf-module-index",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.site-vf-index\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 799.1905975341797,

+        "y": 702.1629467010498,

+        "z": "5099ec4c.e95b94",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a7e8dd90.c6661",

+        "type": "set",

+        "name": "set new vf-module_length",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index + 1`' />",

+        "comments": "",

+        "x": 773.1905746459961,

+        "y": 648.1628403663635,

+        "z": "5099ec4c.e95b94",

+        "wires": []

+    },

+    {

+        "id": "59e1bfa3.d11e4",

+        "type": "set",

+        "name": "set vf-module-request-input.",

+        "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />\n",

+        "comments": "",

+        "x": 788.1902351379395,

+        "y": 538.1542210578918,

+        "z": "5099ec4c.e95b94",

+        "wires": []

+    },

+    {

+        "id": "1c5585c5.9cdc3a",

+        "type": "call",

+        "name": "call sdwan-get-vf-module-site-param",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-site-param' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 804.190544128418,

+        "y": 590.154402256012,

+        "z": "5099ec4c.e95b94",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "64771e44.2196d",

+        "type": "set",

+        "name": "set vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-id' value='`$prop.site-vf-index`' />\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $prop.site-vf-index\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",

+        "comments": "",

+        "x": 786.0039939880371,

+        "y": 806.0000591278076,

+        "z": "5099ec4c.e95b94",

+        "wires": []

+    },

+    {

+        "id": "bb863987.8db5d8",

+        "type": "set",

+        "name": "set vf-module-level-oper-status",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.order-status'  value='Created' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />\n",

+        "comments": "",

+        "x": 795.5040130615234,

+        "y": 854.9999685287476,

+        "z": "5099ec4c.e95b94",

+        "wires": []

+    },

+    {

+        "id": "670cd372.9429ec",

+        "type": "save",

+        "name": "save sdwan vpn resource in AAI",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource' \n      key='site-resource.site-resource-id = $prop.site-vf-index' >\n<parameter name='site-resource-id' value='`$prop.site-vf-index`' />\n<parameter name='site-resource-name' value='`$prop.site.name`' />\n<parameter name='description' value='`$prop.site.description`' />\n<parameter name='type' value='`$prop.site.type`' />\n<parameter name='role' value='`$prop.site.role`' />\n<parameter name='operational-status' value='Created' />\n<parameter name='model-customization-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />\n<parameter name='selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vf-module-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $service-data.vnfs.vnf[$vnf-index].vnf-id  + '/vnf-data/vf-modules/vf-module/' + $prop.site-vf-index + '/vf-module-data/'` \" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 798.0039482116699,

+        "y": 900.4999747276306,

+        "z": "5099ec4c.e95b94",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "4d453124.5225e",

+        "type": "save",

+        "name": "save service relationship in AAI",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='generic-vnf:relationship-list' \n      key='generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"sdwan-vpn\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/sdwan-vpns/sdwan-vpn/' + $prop.site-vf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"sdwan-vpn.id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.site-vf-index`\" />\n\n\n<!--save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource:relationship-list' \n      key='site-resource.site-resource-id = $service-data.vnfs.vnf[$vnf-index].vnf-id' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"sdwan-site\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/sdwan-sites/sdwan-site/' + $prop.site-vf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"sdwan-vpn.id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.site-vf-index`\" /-->\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 797.0038909912109,

+        "y": 947.5000224113464,

+        "z": "5099ec4c.e95b94",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "462de6d9.81f588",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 745.7264213562012,

+        "y": 993.6738653182983,

+        "z": "5099ec4c.e95b94",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-deactivate.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-deactivate.json
new file mode 100644
index 0000000..581bad7
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-deactivate.json
@@ -0,0 +1,1066 @@
+[

+    {

+        "id": "5c29a6ba.038668",

+        "type": "method",

+        "name": "method sdwan-vf-operation-site-deactivate",

+        "xml": "<method rpc='sdwan-vf-operation-site-deactivate' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 236.00390625,

+        "y": 176.58634185791016,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "c10a5ef9.eb1cc"

+            ]

+        ]

+    },

+    {

+        "id": "7b112072.6efee",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 145.00390625,

+        "y": 20,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "c6cd33c4.247fe"

+            ]

+        ]

+    },

+    {

+        "id": "c6cd33c4.247fe",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 224.28961181640625,

+        "y": 82.23810958862305,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "5c29a6ba.038668"

+            ]

+        ]

+    },

+    {

+        "id": "c10a5ef9.eb1cc",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 222.6705780029297,

+        "y": 361.6667137145996,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "987b6cfb.095a4",

+                "2421aa48.a967a6",

+                "a7501bce.e84ca8",

+                "c42c3129.16bb4",

+                "67b10f8d.c3d57",

+                "7db6c871.1ca638",

+                "5c7d3c9a.2071e4",

+                "7e398340.b85bfc",

+                "27be343.61169cc",

+                "4d4441d6.c778f",

+                "2c4e5cc7.b76554",

+                "f0d9af80.b3024",

+                "1cc606fc.7b90b9"

+            ]

+        ]

+    },

+    {

+        "id": "2421aa48.a967a6",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 568.035270690918,

+        "y": 256.2691411972046,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "f656e0b.31e062"

+            ]

+        ]

+    },

+    {

+        "id": "987b6cfb.095a4",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 573.0039253234863,

+        "y": 195.00001049041748,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "d40e76d0.d5ce48"

+            ]

+        ]

+    },

+    {

+        "id": "d40e76d0.d5ce48",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 753.00390625,

+        "y": 194,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "de4bbf24.9eba4"

+            ]

+        ]

+    },

+    {

+        "id": "de4bbf24.9eba4",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 902.4326324462891,

+        "y": 195.14291763305664,

+        "z": "1fcdaf2d.f82361",

+        "wires": []

+    },

+    {

+        "id": "f656e0b.31e062",

+        "type": "switchNode",

+        "name": "switch this vnf-id == input vnf-id",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\">    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 791.0039215087891,

+        "y": 257.00000619888306,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "4eea1b40.3a5ae4"

+            ]

+        ]

+    },

+    {

+        "id": "4eea1b40.3a5ae4",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1006.00390625,

+        "y": 255,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "efdee9f.d679018"

+            ]

+        ]

+    },

+    {

+        "id": "efdee9f.d679018",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1170.00390625,

+        "y": 250,

+        "z": "1fcdaf2d.f82361",

+        "wires": []

+    },

+    {

+        "id": "a7501bce.e84ca8",

+        "type": "switchNode",

+        "name": "switch vf-modules.vf-module_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 618.0039138793945,

+        "y": 327.99999046325684,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "ad789953.0300c8",

+                "a370bc16.16cab",

+                "be5b6663.110a88"

+            ]

+        ]

+    },

+    {

+        "id": "a370bc16.16cab",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 840.00390625,

+        "y": 362,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "22440a59.760c56"

+            ]

+        ]

+    },

+    {

+        "id": "ad789953.0300c8",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 845.0039024353027,

+        "y": 308.9999990463257,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "22440a59.760c56"

+            ]

+        ]

+    },

+    {

+        "id": "22440a59.760c56",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 1003.00390625,

+        "y": 322,

+        "z": "1fcdaf2d.f82361",

+        "wires": []

+    },

+    {

+        "id": "be5b6663.110a88",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 840.00390625,

+        "y": 423,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "cb5b975f.044798"

+            ]

+        ]

+    },

+    {

+        "id": "da67128d.15fa1",

+        "type": "set",

+        "name": "set vf-module_length",

+        "xml": "<set>\n<parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n",

+        "comments": "",

+        "x": 1194.003921508789,

+        "y": 421.0000139474869,

+        "z": "1fcdaf2d.f82361",

+        "wires": []

+    },

+    {

+        "id": "cb5b975f.044798",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1001.0039520263672,

+        "y": 419.99999141693115,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "da67128d.15fa1",

+                "8901c130.f196d"

+            ]

+        ]

+    },

+    {

+        "id": "8901c130.f196d",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1213.003890991211,

+        "y": 473.99999046325684,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "332a4ae3.ad50b6"

+            ]

+        ]

+    },

+    {

+        "id": "332a4ae3.ad50b6",

+        "type": "switchNode",

+        "name": "switch vf-module-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1456.00390625,

+        "y": 469,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "e0471cb4.f94dd"

+            ]

+        ]

+    },

+    {

+        "id": "e0471cb4.f94dd",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1654.0039348602295,

+        "y": 456.0000066757202,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "1ca5dda0.751ea2"

+            ]

+        ]

+    },

+    {

+        "id": "1ca5dda0.751ea2",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1806.00390625,

+        "y": 458,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "3077bb99.f991c4",

+                "96d4f974.763d28",

+                "37f06523.6ef90a"

+            ]

+        ]

+    },

+    {

+        "id": "3077bb99.f991c4",

+        "type": "set",

+        "name": "set tmp.vidx and ctx.vnf-data",

+        "xml": "<set>\n<parameter name='tmp.vidx' value='`$idx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />\n",

+        "comments": "",

+        "x": 2028.00390625,

+        "y": 454,

+        "z": "1fcdaf2d.f82361",

+        "wires": []

+    },

+    {

+        "id": "96d4f974.763d28",

+        "type": "set",

+        "name": "set vf-module-request-input.",

+        "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />\n\n",

+        "comments": "",

+        "x": 2034.00390625,

+        "y": 503,

+        "z": "1fcdaf2d.f82361",

+        "wires": []

+    },

+    {

+        "id": "37f06523.6ef90a",

+        "type": "call",

+        "name": "call sdwan-get-vf-module-site-param",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-site-param' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2062.0041275024414,

+        "y": 551.0000057220459,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "67b10f8d.c3d57",

+        "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/svclogic.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"Provided alloted resource length\"/>\n<parameter name=\"field3\" value=\"'parameters length'\"/>\n<parameter name=\"field4\" value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`'/>\n\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 533.0039806365967,

+        "y": 554.0000057220459,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c42c3129.16bb4",

+        "type": "switchNode",

+        "name": "switch tmp.vidx ",

+        "xml": "<switch test=\"`$tmp.vidx`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 557.0351257324219,

+        "y": 501.0160732269287,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "288e4f16.fdb24"

+            ]

+        ]

+    },

+    {

+        "id": "288e4f16.fdb24",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 704.4637680053711,

+        "y": 500.5874834060669,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "6d758b04.419134"

+            ]

+        ]

+    },

+    {

+        "id": "6d758b04.419134",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 853.8924942016602,

+        "y": 501.73040103912354,

+        "z": "1fcdaf2d.f82361",

+        "wires": []

+    },

+    {

+        "id": "7db6c871.1ca638",

+        "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%/generic-resource-api-dg.properties' />\n    <parameter name='contextPrefix' value='prop' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 564.0351448059082,

+        "y": 603.0160584449768,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5c7d3c9a.2071e4",

+        "type": "for",

+        "name": "for loop idx - VF-module input parameters",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 604.0039367675781,

+        "y": 678.4548873901367,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "f399c5e.d5b6e38"

+            ]

+        ]

+    },

+    {

+        "id": "f399c5e.d5b6e38",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 857.8997802734375,

+        "y": 675.3768310546875,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "6f7dac79.02cc84",

+                "69380680.bf88e8"

+            ]

+        ]

+    },

+    {

+        "id": "6f7dac79.02cc84",

+        "type": "switchNode",

+        "name": "switch type",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'type'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 995.0169830322266,

+        "y": 675.3502712249756,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "8d1befdb.32c39"

+            ]

+        ]

+    },

+    {

+        "id": "8d1befdb.32c39",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1135.016990661621,

+        "y": 676.3502712249756,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "79096937.65ad98"

+            ]

+        ]

+    },

+    {

+        "id": "79096937.65ad98",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1283.5666389465332,

+        "y": 677.3769645690918,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "50251b49.1faa44"

+            ]

+        ]

+    },

+    {

+        "id": "50251b49.1faa44",

+        "type": "set",

+        "name": "set type and sdwan flag",

+        "xml": "<set>\n<parameter name='prop.site.type' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n<parameter name='prop.site.sdwan' value=\"true\" />\n",

+        "comments": "",

+        "x": 1498.9000129699707,

+        "y": 677.3769731521606,

+        "z": "1fcdaf2d.f82361",

+        "wires": []

+    },

+    {

+        "id": "69380680.bf88e8",

+        "type": "switchNode",

+        "name": "switch siteId",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'siteId'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 995.0168800354004,

+        "y": 750.3503141403198,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "89a7d161.ebf8a"

+            ]

+        ]

+    },

+    {

+        "id": "89a7d161.ebf8a",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1135.016887664795,

+        "y": 751.3503141403198,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "8cbeced8.b613d"

+            ]

+        ]

+    },

+    {

+        "id": "8cbeced8.b613d",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1283.566535949707,

+        "y": 752.377007484436,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "5b3b802.4f9668"

+            ]

+        ]

+    },

+    {

+        "id": "5b3b802.4f9668",

+        "type": "set",

+        "name": "set siteId",

+        "xml": "<set>\n<parameter name='prop.site.siteId' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n\n",

+        "comments": "",

+        "x": 1427.8998985290527,

+        "y": 753.3770246505737,

+        "z": "1fcdaf2d.f82361",

+        "wires": []

+    },

+    {

+        "id": "db911ea5.5cc8d",

+        "type": "comment",

+        "name": "Get siteId to delete",

+        "info": "",

+        "comments": "",

+        "x": 1007.0038642883301,

+        "y": 719.4549703598022,

+        "z": "1fcdaf2d.f82361",

+        "wires": []

+    },

+    {

+        "id": "7e398340.b85bfc",

+        "type": "switchNode",

+        "name": "switch prop.site.sdwan",

+        "xml": "<switch test=\"`$prop.site.sdwan`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 533.5116882324219,

+        "y": 845.1213359832764,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "c63fd2c7.67fc"

+            ]

+        ]

+    },

+    {

+        "id": "c63fd2c7.67fc",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 714.5118217468262,

+        "y": 846.1213626861572,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "653ef686.4a6068"

+            ]

+        ]

+    },

+    {

+        "id": "69850da3.9c7b14",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1419.0118446350098,

+        "y": 814.1214170455933,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "ba061c2b.bf22f"

+            ]

+        ]

+    },

+    {

+        "id": "ba061c2b.bf22f",

+        "type": "set",

+        "name": "set controller data",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",

+        "comments": "",

+        "x": 1607.5119400024414,

+        "y": 808.1214267015457,

+        "z": "1fcdaf2d.f82361",

+        "wires": []

+    },

+    {

+        "id": "85b7f6ac.e36598",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1422.5028114318848,

+        "y": 861.6954526901245,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "1b75ce4a.6d0092"

+            ]

+        ]

+    },

+    {

+        "id": "1b75ce4a.6d0092",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",

+        "comments": "",

+        "x": 1596.0742225646973,

+        "y": 849.9811887741089,

+        "z": "1fcdaf2d.f82361",

+        "wires": []

+    },

+    {

+        "id": "5b05b37.dea904c",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1414.8358192443848,

+        "y": 903.0287656784058,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "fb9dc1ca.b519e"

+            ]

+        ]

+    },

+    {

+        "id": "fb9dc1ca.b519e",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",

+        "comments": "",

+        "x": 1602.6083755493164,

+        "y": 898.4679584503174,

+        "z": "1fcdaf2d.f82361",

+        "wires": []

+    },

+    {

+        "id": "31c7dfa0.a2acb",

+        "type": "get-resource",

+        "name": "get-resource esr-thirdparty-sdnc",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1152.0117568969727,

+        "y": 862.1214228868484,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "69850da3.9c7b14",

+                "85b7f6ac.e36598",

+                "5b05b37.dea904c"

+            ]

+        ]

+    },

+    {

+        "id": "c256fc10.56b7c",

+        "type": "execute",

+        "name": "execute RestApiCallNode Create  SDWAN site",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-site-del.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/sites/action/batch-delete'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"site-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 1180.5121002197266,

+        "y": 1060.121494293213,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "626ea124.c2d19",

+                "77fd4a1.6d0b0b4"

+            ]

+        ]

+    },

+    {

+        "id": "6007a527.cdf6fc",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1576.1784210205078,

+        "y": 1040.0103092193604,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "1facc57c.dbee2b",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create vpn rest api\" />\n",

+        "comments": "",

+        "x": 1573.6229209899902,

+        "y": 1074.5656490325928,

+        "z": "1fcdaf2d.f82361",

+        "wires": []

+    },

+    {

+        "id": "2b4696aa.b04baa",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1442.6230182647705,

+        "y": 1076.5657682418823,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "1facc57c.dbee2b"

+            ]

+        ]

+    },

+    {

+        "id": "1fb3f457.93c7fc",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1434.0672721862793,

+        "y": 1039.2324876785278,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "6007a527.cdf6fc"

+            ]

+        ]

+    },

+    {

+        "id": "199f525b.bab65e",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1418.2657356262207,

+        "y": 940.1253787279129,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "e85c3a39.e5bd58"

+            ]

+        ]

+    },

+    {

+        "id": "b6235f60.69d19",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1410.5157356262207,

+        "y": 981.7682620286942,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "429813db.05fa0c"

+            ]

+        ]

+    },

+    {

+        "id": "429813db.05fa0c",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1536.5992317199707,

+        "y": 982.0142947435379,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e85c3a39.e5bd58",

+        "type": "set",

+        "name": "set token-id",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",

+        "comments": "",

+        "x": 1555.2657356262207,

+        "y": 940.1253787279129,

+        "z": "1fcdaf2d.f82361",

+        "wires": []

+    },

+    {

+        "id": "cfb510cb.1323d",

+        "type": "comment",

+        "name": "tmp.thirdparty-sdnc-id is hardcoded value?",

+        "info": "",

+        "comments": "",

+        "x": 1147.515609741211,

+        "y": 826.1253840923309,

+        "z": "1fcdaf2d.f82361",

+        "wires": []

+    },

+    {

+        "id": "653ef686.4a6068",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 875.5117568969727,

+        "y": 846.7878704071045,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "31c7dfa0.a2acb",

+                "d00d4af5.3de678",

+                "f5120e80.4ebea",

+                "c256fc10.56b7c"

+            ]

+        ]

+    },

+    {

+        "id": "d00d4af5.3de678",

+        "type": "execute",

+        "name": "execute RestApiCallNode Get token",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1168.654685974121,

+        "y": 963.1213312149048,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "199f525b.bab65e",

+                "b6235f60.69d19"

+            ]

+        ]

+    },

+    {

+        "id": "f5120e80.4ebea",

+        "type": "call",

+        "name": "call sdwan-get-tenant-auth",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1128.6546096801758,

+        "y": 1012.1212921142578,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "626ea124.c2d19",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1436.6546096801758,

+        "y": 1137.1212921142578,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "352b1b5f.73bb64"

+            ]

+        ]

+    },

+    {

+        "id": "352b1b5f.73bb64",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1592.6546096801758,

+        "y": 1137.1212921142578,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "77fd4a1.6d0b0b4",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1436.6546096801758,

+        "y": 1186.1212921142578,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            [

+                "a435af2d.1ebe4"

+            ]

+        ]

+    },

+    {

+        "id": "a435af2d.1ebe4",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1614.6546096801758,

+        "y": 1183.1212921142578,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "27be343.61169cc",

+        "type": "set",

+        "name": "copy input data to service data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n",

+        "comments": "",

+        "x": 558.4484710693359,

+        "y": 912.5660271644592,

+        "z": "1fcdaf2d.f82361",

+        "wires": []

+    },

+    {

+        "id": "4d4441d6.c778f",

+        "type": "set",

+        "name": "set vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",

+        "comments": "",

+        "x": 542.1151275634766,

+        "y": 953.9827690124512,

+        "z": "1fcdaf2d.f82361",

+        "wires": []

+    },

+    {

+        "id": "2c4e5cc7.b76554",

+        "type": "set",

+        "name": "set vf-module-oper-status to PendingDelete",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status'  value='PendingDelete' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />\n",

+        "comments": "",

+        "x": 597.5952453613281,

+        "y": 1003.5700263977051,

+        "z": "1fcdaf2d.f82361",

+        "wires": []

+    },

+    {

+        "id": "1cc606fc.7b90b9",

+        "type": "save",

+        "name": "update site instance configuration in AAI",

+        "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' \n      key='device.device-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >\n<parameter name='device-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<!--parameter name='device-id' value='`$deviceResp.success[0].id`' /-->\n<parameter name='operational-status' value='PendingDelete' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 586.781982421875,

+        "y": 1052.4551830291748,

+        "z": "1fcdaf2d.f82361",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f0d9af80.b3024",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 507.5597839355469,

+        "y": 1103.8992748260498,

+        "z": "1fcdaf2d.f82361",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-delete.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-delete.json
new file mode 100644
index 0000000..4b4448b
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-delete.json
@@ -0,0 +1,674 @@
+[

+    {

+        "id": "187aa613.a5839a",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 235.00390625,

+        "y": 121.23810815811157,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "582fdd43.f9c334"

+            ]

+        ]

+    },

+    {

+        "id": "582fdd43.f9c334",

+        "type": "method",

+        "name": "method sdwan-vf-operation-site-delete",

+        "xml": "<method rpc='sdwan-vf-operation-site-delete' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 246.71820068359375,

+        "y": 215.58634042739868,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "5b1517bd.e6d538"

+            ]

+        ]

+    },

+    {

+        "id": "dd9a7d3b.c0b22",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 155.71820068359375,

+        "y": 58.999998569488525,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "187aa613.a5839a"

+            ]

+        ]

+    },

+    {

+        "id": "5b1517bd.e6d538",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 263.38490295410156,

+        "y": 449.66671800613403,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "9241d723.4c1768",

+                "583bedbe.114ce4",

+                "530fc00e.364a7",

+                "6080131a.3dc0dc",

+                "e87fa266.b6e36",

+                "809305f5.00af78",

+                "35360c23.e7bca4",

+                "f2c5088e.cdf1f8",

+                "8e537e93.b1e07",

+                "c5084158.dcae4",

+                "a42b62f1.2ca2"

+            ]

+        ]

+    },

+    {

+        "id": "583bedbe.114ce4",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 578.7495651245117,

+        "y": 295.2691397666931,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "54d8e288.9c571c"

+            ]

+        ]

+    },

+    {

+        "id": "9241d723.4c1768",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 583.7182197570801,

+        "y": 234.000009059906,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "deee2c29.49f92"

+            ]

+        ]

+    },

+    {

+        "id": "deee2c29.49f92",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 763.7182006835938,

+        "y": 232.99999856948853,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "c9ce5d0a.f9326"

+            ]

+        ]

+    },

+    {

+        "id": "c9ce5d0a.f9326",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 913.1469268798828,

+        "y": 234.14291620254517,

+        "z": "e1fdfe1b.e244a",

+        "wires": []

+    },

+    {

+        "id": "54d8e288.9c571c",

+        "type": "switchNode",

+        "name": "switch this vnf-id == input vnf-id",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\">    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 801.7182159423828,

+        "y": 296.0000047683716,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "60ddf1fc.3523e"

+            ]

+        ]

+    },

+    {

+        "id": "60ddf1fc.3523e",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1016.7182006835938,

+        "y": 293.9999985694885,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "3516b602.f2680a"

+            ]

+        ]

+    },

+    {

+        "id": "3516b602.f2680a",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1180.7182006835938,

+        "y": 288.9999985694885,

+        "z": "e1fdfe1b.e244a",

+        "wires": []

+    },

+    {

+        "id": "530fc00e.364a7",

+        "type": "switchNode",

+        "name": "switch vf-modules.vf-module_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 649.7182350158691,

+        "y": 372.00002336502075,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "8726f5fa.6a9e18",

+                "28d1ea9e.688d26",

+                "8ffcd1cb.2fcee"

+            ]

+        ]

+    },

+    {

+        "id": "28d1ea9e.688d26",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 871.7182273864746,

+        "y": 406.0000329017639,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "ed85f484.f7f278"

+            ]

+        ]

+    },

+    {

+        "id": "8726f5fa.6a9e18",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 876.7182235717773,

+        "y": 353.0000319480896,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "ed85f484.f7f278"

+            ]

+        ]

+    },

+    {

+        "id": "ed85f484.f7f278",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 1034.7182273864746,

+        "y": 366.0000329017639,

+        "z": "e1fdfe1b.e244a",

+        "wires": []

+    },

+    {

+        "id": "8ffcd1cb.2fcee",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 871.7182273864746,

+        "y": 467.0000329017639,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "340e8678.09189a"

+            ]

+        ]

+    },

+    {

+        "id": "806cc3c4.ab426",

+        "type": "set",

+        "name": "set vf-module_length",

+        "xml": "<set>\n<parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n",

+        "comments": "",

+        "x": 1225.7182426452637,

+        "y": 465.0000468492508,

+        "z": "e1fdfe1b.e244a",

+        "wires": []

+    },

+    {

+        "id": "340e8678.09189a",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1032.7182731628418,

+        "y": 464.00002431869507,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "806cc3c4.ab426",

+                "f59f2884.04cee8"

+            ]

+        ]

+    },

+    {

+        "id": "f59f2884.04cee8",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1244.7182121276855,

+        "y": 518.0000233650208,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "2f51cfde.50b1e"

+            ]

+        ]

+    },

+    {

+        "id": "2f51cfde.50b1e",

+        "type": "switchNode",

+        "name": "switch vf-module-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1487.7182273864746,

+        "y": 513.0000329017639,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "b1049a4.b276d68"

+            ]

+        ]

+    },

+    {

+        "id": "b1049a4.b276d68",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1728.718355178833,

+        "y": 506.00003004074097,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "30dc082a.0a5cd8"

+            ]

+        ]

+    },

+    {

+        "id": "30dc082a.0a5cd8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1880.7183265686035,

+        "y": 508.00002336502075,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "68ce9aa6.9cbee4",

+                "6fd91070.2784d",

+                "83965509.802248"

+            ]

+        ]

+    },

+    {

+        "id": "68ce9aa6.9cbee4",

+        "type": "set",

+        "name": "set tmp.vidx and ctx.vnf-data",

+        "xml": "<set>\n<parameter name='tmp.vidx' value='`$idx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />\n",

+        "comments": "",

+        "x": 2102.7183265686035,

+        "y": 504.00002336502075,

+        "z": "e1fdfe1b.e244a",

+        "wires": []

+    },

+    {

+        "id": "6fd91070.2784d",

+        "type": "set",

+        "name": "set vf-module-request-input.",

+        "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />\n\n",

+        "comments": "",

+        "x": 2108.7183265686035,

+        "y": 553.0000233650208,

+        "z": "e1fdfe1b.e244a",

+        "wires": []

+    },

+    {

+        "id": "83965509.802248",

+        "type": "call",

+        "name": "call sdwan-get-vf-module-device-param",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-device-param' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2136.718547821045,

+        "y": 601.0000290870667,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6080131a.3dc0dc",

+        "type": "switchNode",

+        "name": "switch tmp.vidx ",

+        "xml": "<switch test=\"`$tmp.vidx`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 588.7494468688965,

+        "y": 545.0161061286926,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "73f1e922.5bcb58"

+            ]

+        ]

+    },

+    {

+        "id": "73f1e922.5bcb58",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 736.1780891418457,

+        "y": 544.5875163078308,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "a8c19777.b80838"

+            ]

+        ]

+    },

+    {

+        "id": "a8c19777.b80838",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 885.6068153381348,

+        "y": 545.7304339408875,

+        "z": "e1fdfe1b.e244a",

+        "wires": []

+    },

+    {

+        "id": "e87fa266.b6e36",

+        "type": "switchNode",

+        "name": "switch vf-module-oper-status",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 633.047607421875,

+        "y": 615.3333115577698,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "f563296b.c51508",

+                "5df5c282.7498ac"

+            ]

+        ]

+    },

+    {

+        "id": "f563296b.c51508",

+        "type": "outcome",

+        "name": "outcome PendingDelete",

+        "xml": "<outcome value='PendingDelete'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 923.8808746337891,

+        "y": 619.4444346427917,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "def8fb03.8e15e8"

+            ]

+        ]

+    },

+    {

+        "id": "5df5c282.7498ac",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 890.8810119628906,

+        "y": 671.4444873332977,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "2bb9155.57a22ea"

+            ]

+        ]

+    },

+    {

+        "id": "2bb9155.57a22ea",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'VNF is not in appropriate state for activate. Current state is ' + $service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`\" />",

+        "comments": "",

+        "x": 1050.3807792663574,

+        "y": 674.4444863796234,

+        "z": "e1fdfe1b.e244a",

+        "wires": []

+    },

+    {

+        "id": "def8fb03.8e15e8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1121.1872749328613,

+        "y": 629.7695889472961,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a42b62f1.2ca2",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 611.1588096618652,

+        "y": 994.2221984863281,

+        "z": "e1fdfe1b.e244a",

+        "wires": []

+    },

+    {

+        "id": "809305f5.00af78",

+        "type": "set",

+        "name": "set prop.vnfNewidx",

+        "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`0`' />\n",

+        "comments": "",

+        "x": 607.2454776763916,

+        "y": 689.3333535194397,

+        "z": "e1fdfe1b.e244a",

+        "wires": []

+    },

+    {

+        "id": "35360c23.e7bca4",

+        "type": "for",

+        "name": "for lidx..service-data.vf-modules.vf-module[]",

+        "xml": "<for index='lidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 687.2453918457031,

+        "y": 740.3333554267883,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "37a5b897.303c08"

+            ]

+        ]

+    },

+    {

+        "id": "f2c5088e.cdf1f8",

+        "type": "set",

+        "name": "set new vnf length",

+        "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length\" value='`$prop.vnfidxLen`'/>\n\n\t\n",

+        "comments": "",

+        "x": 611.3467636108398,

+        "y": 793.1375732421875,

+        "z": "e1fdfe1b.e244a",

+        "wires": []

+    },

+    {

+        "id": "8e537e93.b1e07",

+        "type": "set",

+        "name": "Remove vnf from ServiceData",

+        "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].\" value=\"\"/>\n",

+        "comments": "",

+        "x": 648.2454376220703,

+        "y": 843.3333582878113,

+        "z": "e1fdfe1b.e244a",

+        "wires": []

+    },

+    {

+        "id": "37a5b897.303c08",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 947.24538230896,

+        "y": 747.3332152366638,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "28df8155.45a17e"

+            ]

+        ]

+    },

+    {

+        "id": "b54d3819.c1f898",

+        "type": "delete",

+        "name": "delete site vf instance configuration in AAI",

+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='site-resource' \n        key='site-resource.site-resource-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 693.2457847595215,

+        "y": 941.59490442276,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "28df8155.45a17e",

+        "type": "switchNode",

+        "name": "switch vnf-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$lidx].vf-module-data.vf-module-information.vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1133.245449066162,

+        "y": 747.3333759307861,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "b11e0659.68c598"

+            ]

+        ]

+    },

+    {

+        "id": "b11e0659.68c598",

+        "type": "outcomeFalse",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1302.2454566955566,

+        "y": 746.3332133293152,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "8c9a4a2b.2a6988"

+            ]

+        ]

+    },

+    {

+        "id": "8c9a4a2b.2a6988",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1456.2452955245972,

+        "y": 738.3332142829895,

+        "z": "e1fdfe1b.e244a",

+        "wires": [

+            [

+                "9c4fcf43.faebd",

+                "f51761cb.90c27"

+            ]

+        ]

+    },

+    {

+        "id": "9c4fcf43.faebd",

+        "type": "set",

+        "name": "set  vnf data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-data.`' />\n",

+        "comments": "",

+        "x": 1621.2453908920288,

+        "y": 713.3333697319031,

+        "z": "e1fdfe1b.e244a",

+        "wires": []

+    },

+    {

+        "id": "f51761cb.90c27",

+        "type": "set",

+        "name": "set prop.vnfNewidx",

+        "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />\n",

+        "comments": "",

+        "x": 1643.2453908920288,

+        "y": 769.333333492279,

+        "z": "e1fdfe1b.e244a",

+        "wires": []

+    },

+    {

+        "id": "c5084158.dcae4",

+        "type": "set",

+        "name": "set vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",

+        "comments": "",

+        "x": 635.0476455688477,

+        "y": 888.6666932106018,

+        "z": "e1fdfe1b.e244a",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-activate.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-activate.json
new file mode 100644
index 0000000..b51105e
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-activate.json
@@ -0,0 +1,556 @@
+[

+    {

+        "id": "5781857d.34f10c",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 188.03125,

+        "y": 43.031253814697266,

+        "z": "22c1b0cd.01617",

+        "wires": [

+            [

+                "34ea5d13.adf2e2"

+            ]

+        ]

+    },

+    {

+        "id": "34ea5d13.adf2e2",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 267.31695556640625,

+        "y": 105.26936340332031,

+        "z": "22c1b0cd.01617",

+        "wires": [

+            [

+                "7a350033.439ec"

+            ]

+        ]

+    },

+    {

+        "id": "7a350033.439ec",

+        "type": "method",

+        "name": "method sdwan-vf-operation-vpn-activate",

+        "xml": "<method rpc='sdwan-vf-operation-vpn-activate' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 279.03125,

+        "y": 199.61759567260742,

+        "z": "22c1b0cd.01617",

+        "wires": [

+            [

+                "eae20948.900428"

+            ]

+        ]

+    },

+    {

+        "id": "eae20948.900428",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 265.6979217529297,

+        "y": 384.6979675292969,

+        "z": "22c1b0cd.01617",

+        "wires": [

+            [

+                "94df5008.7b42f",

+                "7ed34394.611e1c",

+                "23e3b0bc.99c9d",

+                "3dc91e9a.3f3102",

+                "f95e37c5.b5e148",

+                "fc6cc049.08c93",

+                "b58620d0.ff986",

+                "b6f2d919.b74fa8",

+                "9597930d.e038d",

+                "ef79430c.f091e",

+                "fc543198.c0c2e",

+                "a41eacc.0c7475",

+                "d46578bf.5e8e58",

+                "21b0010b.c0a22e",

+                "5d9f4d8a.00ca04",

+                "48cf7750.d184d8",

+                "4efe1671.fc4788",

+                "d6a9c738.cde808"

+            ]

+        ]

+    },

+    {

+        "id": "94df5008.7b42f",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:validate-sdwan-vf-vpn-input-parameters",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-vf-vpn-input-parameters' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 805.6980133056641,

+        "y": 222.03141355514526,

+        "z": "22c1b0cd.01617",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "23e3b0bc.99c9d",

+        "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%/generic-resource-api-dg.properties' />\n    <parameter name='contextPrefix' value='prop' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 637.0625152587891,

+        "y": 310.06250381469727,

+        "z": "22c1b0cd.01617",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7ed34394.611e1c",

+        "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/svclogic.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"sdwan-network-topology-operation-activate\"/>\n<parameter name=\"field3\" value=\"SDWAN-Activate\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 601.7603912353516,

+        "y": 266.0624761581421,

+        "z": "22c1b0cd.01617",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7f983045.d243a",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 924.486083984375,

+        "y": 360.04166173934937,

+        "z": "22c1b0cd.01617",

+        "wires": [

+            [

+                "875bfb0c.99b4c8",

+                "fda7ec02.f4fa3"

+            ]

+        ]

+    },

+    {

+        "id": "875bfb0c.99b4c8",

+        "type": "switchNode",

+        "name": "switch name",

+        "xml": "<switch test=\"`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1108.4861907958984,

+        "y": 322.0416889190674,

+        "z": "22c1b0cd.01617",

+        "wires": [

+            [

+                "2605efbe.66ab7"

+            ]

+        ]

+    },

+    {

+        "id": "2605efbe.66ab7",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1282.4863166809082,

+        "y": 322.04169273376465,

+        "z": "22c1b0cd.01617",

+        "wires": [

+            [

+                "dadb2cf7.2ff69"

+            ]

+        ]

+    },

+    {

+        "id": "dadb2cf7.2ff69",

+        "type": "set",

+        "name": "set name",

+        "xml": "<set>\n<parameter name='prop.name' value='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1445.4862022399902,

+        "y": 321.6416873931885,

+        "z": "22c1b0cd.01617",

+        "wires": []

+    },

+    {

+        "id": "fda7ec02.f4fa3",

+        "type": "switchNode",

+        "name": "switch topology",

+        "xml": "<switch test=\"`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'topology'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1118.9026908874512,

+        "y": 369.70831775665283,

+        "z": "22c1b0cd.01617",

+        "wires": [

+            [

+                "3ae5ca3b.f74cc6"

+            ]

+        ]

+    },

+    {

+        "id": "3ae5ca3b.f74cc6",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1292.902816772461,

+        "y": 369.7083215713501,

+        "z": "22c1b0cd.01617",

+        "wires": [

+            [

+                "4b92911a.56168"

+            ]

+        ]

+    },

+    {

+        "id": "4b92911a.56168",

+        "type": "set",

+        "name": "set topology",

+        "xml": "<set>\n<parameter name='prop.topology' value='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1455.902702331543,

+        "y": 369.3083162307739,

+        "z": "22c1b0cd.01617",

+        "wires": []

+    },

+    {

+        "id": "3dc91e9a.3f3102",

+        "type": "for",

+        "name": "for each network-input-parameters",

+        "xml": "<for index='idx' start='0' end='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 672.6526527404785,

+        "y": 369.708309173584,

+        "z": "22c1b0cd.01617",

+        "wires": [

+            [

+                "7f983045.d243a"

+            ]

+        ]

+    },

+    {

+        "id": "4efe1671.fc4788",

+        "type": "get-resource",

+        "name": "get-resource esr-thirdparty-sdnc",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = 'SDWANController' AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 669.4862022399902,

+        "y": 496.04168128967285,

+        "z": "22c1b0cd.01617",

+        "wires": [

+            [

+                "46f8b46c.58115c",

+                "a1d7d554.010ed8",

+                "21d4ff8e.d6051"

+            ]

+        ]

+    },

+    {

+        "id": "46f8b46c.58115c",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 931.486083984375,

+        "y": 449.04166159033775,

+        "z": "22c1b0cd.01617",

+        "wires": [

+            [

+                "df26ddf3.952"

+            ]

+        ]

+    },

+    {

+        "id": "a1d7d554.010ed8",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 934.97705078125,

+        "y": 496.615697234869,

+        "z": "22c1b0cd.01617",

+        "wires": [

+            [

+                "c96d1e93.137b6"

+            ]

+        ]

+    },

+    {

+        "id": "21d4ff8e.d6051",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 930.31005859375,

+        "y": 537.9490102231503,

+        "z": "22c1b0cd.01617",

+        "wires": [

+            [

+                "29af3383.039eac"

+            ]

+        ]

+    },

+    {

+        "id": "c96d1e93.137b6",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",

+        "comments": "",

+        "x": 1111.5484619140625,

+        "y": 484.9014333188534,

+        "z": "22c1b0cd.01617",

+        "wires": []

+    },

+    {

+        "id": "29af3383.039eac",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",

+        "comments": "",

+        "x": 1118.0826148986816,

+        "y": 533.3882029950619,

+        "z": "22c1b0cd.01617",

+        "wires": []

+    },

+    {

+        "id": "48cf7750.d184d8",

+        "type": "execute",

+        "name": "execute RestApiCallNode Get token",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 689.4861221313477,

+        "y": 615.0416851043701,

+        "z": "22c1b0cd.01617",

+        "wires": [

+            [

+                "47bd8a4e.743ee4",

+                "5c5772a6.eeb8ac"

+            ]

+        ]

+    },

+    {

+        "id": "47bd8a4e.743ee4",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 933.486156463623,

+        "y": 592.0416917800903,

+        "z": "22c1b0cd.01617",

+        "wires": [

+            [

+                "91c9ef14.b46a4"

+            ]

+        ]

+    },

+    {

+        "id": "5c5772a6.eeb8ac",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 925.736156463623,

+        "y": 645.6845750808716,

+        "z": "22c1b0cd.01617",

+        "wires": [

+            [

+                "b75502f5.e09e5"

+            ]

+        ]

+    },

+    {

+        "id": "91c9ef14.b46a4",

+        "type": "set",

+        "name": "set token-id",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",

+        "comments": "",

+        "x": 1083.486083984375,

+        "y": 593.0416603088379,

+        "z": "22c1b0cd.01617",

+        "wires": []

+    },

+    {

+        "id": "b75502f5.e09e5",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing get token rest api\" />\n",

+        "comments": "",

+        "x": 1078.486156463623,

+        "y": 645.4346361160278,

+        "z": "22c1b0cd.01617",

+        "wires": []

+    },

+    {

+        "id": "df26ddf3.952",

+        "type": "set",

+        "name": "set controller data",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",

+        "comments": "",

+        "x": 1128.9861450195312,

+        "y": 437.04166159033775,

+        "z": "22c1b0cd.01617",

+        "wires": []

+    },

+    {

+        "id": "5d9f4d8a.00ca04",

+        "type": "execute",

+        "name": "execute RestApiCallNode Create vpn",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-vpn-create.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/vpn'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"vpn-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 695.2254638671875,

+        "y": 728.721978187561,

+        "z": "22c1b0cd.01617",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f95e37c5.b5e148",

+        "type": "set",

+        "name": "set prop.vpn-id and prop.vpn1Id",

+        "xml": "<set>\n<parameter name='prop.vpn-id' value='`$vpn-result.success[0].id`' />\n<parameter name='prop.vpn1Id' value='`$vpn-result.success[0].id`' />\n",

+        "comments": "",

+        "x": 680.2256622314453,

+        "y": 782.7221002578735,

+        "z": "22c1b0cd.01617",

+        "wires": []

+    },

+    {

+        "id": "21b0010b.c0a22e",

+        "type": "execute",

+        "name": "execute RestApiCallNode Create vpn topology",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-vpn-topology-create.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/' + $prop.vpn-id + '/topology'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"vpn-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 728.7254638671875,

+        "y": 825.7219481468201,

+        "z": "22c1b0cd.01617",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "fc6cc049.08c93",

+        "type": "set",

+        "name": "set tenant-id to service-data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='tenant-id' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$prop.tenant-id`' />\n",

+        "comments": "",

+        "x": 670.7255401611328,

+        "y": 877.4720306396484,

+        "z": "22c1b0cd.01617",

+        "wires": []

+    },

+    {

+        "id": "b58620d0.ff986",

+        "type": "set",

+        "name": "set  vpn-id to service-data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='vpn-id' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$prop.vpn-id`' />\n",

+        "comments": "",

+        "x": 660.9754791259766,

+        "y": 976.2218685150146,

+        "z": "22c1b0cd.01617",

+        "wires": []

+    },

+    {

+        "id": "b6f2d919.b74fa8",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 618.0352668762207,

+        "y": 1336.5354351997375,

+        "z": "22c1b0cd.01617",

+        "wires": []

+    },

+    {

+        "id": "d6a9c738.cde808",

+        "type": "update",

+        "name": "update SDWAN VPN status to AAI",

+        "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='sdwan-vpn' \n      key='sdwan-vpn.sdwan-vpn-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >\n<parameter name='sdwan-vpn-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<parameter name='operational-status' value='Active' />\n<parameter name='tenanat-id' value='`$prop.tenant-id`' />\n<parameter name='vpn-id' value='`$prop.vpn-id`' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 687.3649978637695,

+        "y": 1230.905207157135,

+        "z": "22c1b0cd.01617",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "fc543198.c0c2e",

+        "type": "set",

+        "name": "set vf-module-level-oper-status",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status'  value='Active' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />",

+        "comments": "",

+        "x": 684.0000152587891,

+        "y": 1174.0000378815457,

+        "z": "22c1b0cd.01617",

+        "wires": []

+    },

+    {

+        "id": "ef79430c.f091e",

+        "type": "set",

+        "name": "set vf-module-id and vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",

+        "comments": "",

+        "x": 718.0000152587891,

+        "y": 1125.5000369278714,

+        "z": "22c1b0cd.01617",

+        "wires": []

+    },

+    {

+        "id": "9597930d.e038d",

+        "type": "set",

+        "name": "copy input data in service-data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n",

+        "comments": "",

+        "x": 681.9999694824219,

+        "y": 1077.7499914169312,

+        "z": "22c1b0cd.01617",

+        "wires": []

+    },

+    {

+        "id": "a41eacc.0c7475",

+        "type": "set",

+        "name": "set  param-length + 1",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length + 1`' />",

+        "comments": "",

+        "x": 657.0000476837158,

+        "y": 1026.0000734329224,

+        "z": "22c1b0cd.01617",

+        "wires": []

+    },

+    {

+        "id": "d46578bf.5e8e58",

+        "type": "set",

+        "name": "set param length + 1",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length + 1`' />\n",

+        "comments": "",

+        "x": 652.0000152587891,

+        "y": 922.0000267028809,

+        "z": "22c1b0cd.01617",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-create.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-create.json
new file mode 100644
index 0000000..e8db0bf
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-create.json
@@ -0,0 +1,654 @@
+[

+    {

+        "id": "5892697a.9c21d8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 482.03125,

+        "y": 382.00000220537186,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            [

+                "3419ca3e.28a196",

+                "18fb5a27.0012c6",

+                "987ea69b.4f3758",

+                "6b48247.18bfcdc",

+                "12914a5f.e6b036",

+                "5fd7b0fa.16e31",

+                "623a4487.e99e9c",

+                "4156b8b2.c36818",

+                "9723e968.8650b8",

+                "7be42a51.991f94",

+                "4a04380d.9f4fa8",

+                "ea1ae816.a77cc8",

+                "43b512b5.67ddbc",

+                "64fa1f85.6660d",

+                "37949d89.629082"

+            ]

+        ]

+    },

+    {

+        "id": "309bc096.5fac7",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 324.03126525878906,

+        "y": 165.999993622303,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            [

+                "1f3522ef.5a48ed"

+            ]

+        ]

+    },

+    {

+        "id": "1f3522ef.5a48ed",

+        "type": "method",

+        "name": "sdwan-vf-operation-vpn-create",

+        "xml": "<method rpc='sdwan-vf-operation-vpn-create' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 323.03126525878906,

+        "y": 265.999993622303,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            [

+                "5892697a.9c21d8"

+            ]

+        ]

+    },

+    {

+        "id": "3582a035.23289",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 153.53126525878906,

+        "y": 77.00000125169754,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            [

+                "309bc096.5fac7"

+            ]

+        ]

+    },

+    {

+        "id": "3419ca3e.28a196",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 782.3606719970703,

+        "y": 273.49612647295,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            [

+                "e71de9cd.25e818"

+            ]

+        ]

+    },

+    {

+        "id": "e71de9cd.25e818",

+        "type": "switchNode",

+        "name": "switch this vnf-id == input vnf-id",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\">    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1034.3607635498047,

+        "y": 272.1627896428108,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            [

+                "637c1185.e9ab2"

+            ]

+        ]

+    },

+    {

+        "id": "46c73b2c.401b84",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n\n",

+        "comments": "",

+        "x": 1406.0272521972656,

+        "y": 274.16279250383377,

+        "z": "c6a9f1ad.d0abe",

+        "wires": []

+    },

+    {

+        "id": "637c1185.e9ab2",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1252.6940803527832,

+        "y": 274.1627715229988,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            [

+                "46c73b2c.401b84"

+            ]

+        ]

+    },

+    {

+        "id": "6b48247.18bfcdc",

+        "type": "for",

+        "name": "for loop idx - VF input parameters",

+        "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 856.2814559936523,

+        "y": 495.6666596531868,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            [

+                "de525177.578e5"

+            ]

+        ]

+    },

+    {

+        "id": "de525177.578e5",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1071.059799194336,

+        "y": 493.2222436070442,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            [

+                "f754a25f.6ce5b",

+                "a4e3fb1c.255518"

+            ]

+        ]

+    },

+    {

+        "id": "f754a25f.6ce5b",

+        "type": "execute",

+        "name": "execute split parameterName",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>\n<parameter name=\"regex\" value=\"_\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"param-prefix\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1267.3160018920898,

+        "y": 470.9703820347786,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a4e3fb1c.255518",

+        "type": "set",

+        "name": "set parameterName",

+        "xml": "<set>\n<parameter name=\"`vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`\" value='`$param-prefix[$param-prefix_length -1]`'/>\n",

+        "comments": "",

+        "x": 1236.7604293823242,

+        "y": 507.9704983830452,

+        "z": "c6a9f1ad.d0abe",

+        "wires": []

+    },

+    {

+        "id": "af1423f9.97927",

+        "type": "comment",

+        "name": "Take the parameter names by removing prefix",

+        "info": "",

+        "comments": "",

+        "x": 1240.2816581726074,

+        "y": 430.3333280682564,

+        "z": "c6a9f1ad.d0abe",

+        "wires": []

+    },

+    {

+        "id": "18fb5a27.0012c6",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 796.7812652587891,

+        "y": 228.99999552965164,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            [

+                "f110968e.0e58a8"

+            ]

+        ]

+    },

+    {

+        "id": "f110968e.0e58a8",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 983.4479446411133,

+        "y": 228.33329325914383,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            [

+                "241d819c.c8566e"

+            ]

+        ]

+    },

+    {

+        "id": "241d819c.c8566e",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n    <parameter name=\"error-message\" value=\"There are no VNFs in MD-SAL\" />\n",

+        "comments": "",

+        "x": 1165.1145706176758,

+        "y": 228.33329325914383,

+        "z": "c6a9f1ad.d0abe",

+        "wires": []

+    },

+    {

+        "id": "987ea69b.4f3758",

+        "type": "switchNode",

+        "name": "switch vf-modules.vf-module_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 838.0312547683716,

+        "y": 348.99999648332596,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            [

+                "f6ea0a95.1bfcf8",

+                "7969b2ec.a074ec"

+            ]

+        ]

+    },

+    {

+        "id": "f6ea0a95.1bfcf8",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1069.031265258789,

+        "y": 324.999993622303,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            [

+                "95e71927.be46c8"

+            ]

+        ]

+    },

+    {

+        "id": "7969b2ec.a074ec",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1069.031265258789,

+        "y": 364.999993622303,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            [

+                "53dfed7f.4e81b4"

+            ]

+        ]

+    },

+    {

+        "id": "95e71927.be46c8",

+        "type": "set",

+        "name": "set vf-index",

+        "xml": "<set>\n<parameter name='vf-index' value='0' />\n",

+        "comments": "",

+        "x": 1211.531265258789,

+        "y": 324.999993622303,

+        "z": "c6a9f1ad.d0abe",

+        "wires": []

+    },

+    {

+        "id": "53dfed7f.4e81b4",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1213.3883094787598,

+        "y": 364.9365056157112,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            [

+                "bd7a9ede.140ae",

+                "804dd88d.6a51d8"

+            ]

+        ]

+    },

+    {

+        "id": "804dd88d.6a51d8",

+        "type": "set",

+        "name": "set vf-index",

+        "xml": "<set>\n<parameter name='vf-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n\n",

+        "comments": "",

+        "x": 1366.086784362793,

+        "y": 334.55560430837795,

+        "z": "c6a9f1ad.d0abe",

+        "wires": []

+    },

+    {

+        "id": "bd7a9ede.140ae",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-index`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1422.5152893066406,

+        "y": 387.77773410081863,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            [

+                "549e64ff.4f02fc"

+            ]

+        ]

+    },

+    {

+        "id": "96b53f57.6e1a2",

+        "type": "comment",

+        "name": "make sure this network doesn't exist already",

+        "info": "",

+        "comments": "",

+        "x": 1646.1660194396973,

+        "y": 346.0317915081978,

+        "z": "c6a9f1ad.d0abe",

+        "wires": []

+    },

+    {

+        "id": "549e64ff.4f02fc",

+        "type": "switchNode",

+        "name": "switch vf-module-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1697.801010131836,

+        "y": 387.3492367863655,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            [

+                "789deb75.f505c4"

+            ]

+        ]

+    },

+    {

+        "id": "789deb75.f505c4",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1598.53120803833,

+        "y": 445.92066794633865,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            [

+                "60c9009a.34691"

+            ]

+        ]

+    },

+    {

+        "id": "60c9009a.34691",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id already found in service-data\" />\n",

+        "comments": "",

+        "x": 1746.2813110351562,

+        "y": 445.77786001516506,

+        "z": "c6a9f1ad.d0abe",

+        "wires": []

+    },

+    {

+        "id": "4156b8b2.c36818",

+        "type": "set",

+        "name": "copy input data to service data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-id' value='`$prop.vpn-vf-index`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vnf-information.' value='`$vf-module-topology-operation-input.vnf-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />\n\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-topology.' value='`$tmp.vf-module-topology.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index+1`' />\n\n\n",

+        "comments": "",

+        "x": 851.8844451904297,

+        "y": 798.4962475895882,

+        "z": "c6a9f1ad.d0abe",

+        "wires": []

+    },

+    {

+        "id": "623a4487.e99e9c",

+        "type": "execute",

+        "name": "execute generate-vf-module-index",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.vpn-vf-index\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 863.218017578125,

+        "y": 751.162949860096,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5fd7b0fa.16e31",

+        "type": "set",

+        "name": "set new vf-module_length",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index + 1`' />",

+        "comments": "",

+        "x": 835.2180786132812,

+        "y": 702.162949860096,

+        "z": "c6a9f1ad.d0abe",

+        "wires": []

+    },

+    {

+        "id": "12914a5f.e6b036",

+        "type": "set",

+        "name": "set vf-module-request-input.",

+        "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />\n",

+        "comments": "",

+        "x": 835.2176055908203,

+        "y": 648.1542380452156,

+        "z": "c6a9f1ad.d0abe",

+        "wires": []

+    },

+    {

+        "id": "9723e968.8650b8",

+        "type": "set",

+        "name": "set vf-module-level-oper-status",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.order-status'  value='Created' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />",

+        "comments": "",

+        "x": 845.5314331054688,

+        "y": 896.0000686645508,

+        "z": "c6a9f1ad.d0abe",

+        "wires": []

+    },

+    {

+        "id": "64fa1f85.6660d",

+        "type": "save",

+        "name": "save sdwan vpn resource in AAI",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='sdwan-vpn' \n      key='sdwan-vpn.sdwan-vpn-id = $prop.vpn-vf-index' >\n<parameter name='sdwan-vpn-id' value='`$prop.vpn-vf-index`' />\n<parameter name='sdwan-vpn-name' value='`$prop.name`' />\n<parameter name='topology' value='`$prop.topology`' />\n<parameter name='operational-status' value='Created' />\n<parameter name='model-customization-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />\n<parameter name='selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vf-module-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $service-data.vnfs.vnf[$vnf-index].vnf-id  + '/vnf-data/vf-modules/vf-module/' + $prop.vpn-vf-index + '/vf-module-data/'` \" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 852.0312938690186,

+        "y": 941.5000165104866,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "37949d89.629082",

+        "type": "save",

+        "name": "save service relationship in AAI",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='generic-vnf:relationship-list' \n      key='generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"sdwan-vpn\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/sdwan-vpns/sdwan-vpn/' + $prop.vpn-vf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"sdwan-vpn.id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.vpn-vf-index`\" />\n\n\n<!--save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource:relationship-list' \n      key='site-resource.site-resource-id = $service-data.vnfs.vnf[$vnf-index].vnf-id' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"sdwan-site\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/sdwan-sites/sdwan-site/' + $prop.site-vf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"sdwan-vpn.id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.site-vf-index`\" /-->\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 849.0312213897705,

+        "y": 987.500047981739,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7be42a51.991f94",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 799.7537670135498,

+        "y": 1034.6739071011543,

+        "z": "c6a9f1ad.d0abe",

+        "wires": []

+    },

+    {

+        "id": "4a04380d.9f4fa8",

+        "type": "for",

+        "name": "for loop i - Network input parameters",

+        "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 863.2851715087891,

+        "y": 584.5039075016975,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            [

+                "b830a75.ba7e858"

+            ]

+        ]

+    },

+    {

+        "id": "b830a75.ba7e858",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1150.5080490112305,

+        "y": 584.726221382618,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            [

+                "e85749e.f646cb8",

+                "44026e82.c4236"

+            ]

+        ]

+    },

+    {

+        "id": "e85749e.f646cb8",

+        "type": "switchNode",

+        "name": "switch name",

+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1338.729892730713,

+        "y": 567.0595255494118,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            [

+                "b01f15f5.803658"

+            ]

+        ]

+    },

+    {

+        "id": "44026e82.c4236",

+        "type": "switchNode",

+        "name": "switch topology",

+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'topology'`\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 1349.5695533752441,

+        "y": 607.0595236420631,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            [

+                "9f894ed7.8915b"

+            ]

+        ]

+    },

+    {

+        "id": "b01f15f5.803658",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1525.729892730713,

+        "y": 563.0595255494118,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            [

+                "e28f739a.4fef3"

+            ]

+        ]

+    },

+    {

+        "id": "9f894ed7.8915b",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1519.5695533752441,

+        "y": 603.0595236420631,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            [

+                "3dd20fe.b268ef"

+            ]

+        ]

+    },

+    {

+        "id": "e28f739a.4fef3",

+        "type": "set",

+        "name": "set name",

+        "xml": "<set>\n<parameter name='prop.name' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n\n",

+        "comments": "",

+        "x": 1675.73002243042,

+        "y": 561.6595321297646,

+        "z": "c6a9f1ad.d0abe",

+        "wires": []

+    },

+    {

+        "id": "3dd20fe.b268ef",

+        "type": "set",

+        "name": "set topology",

+        "xml": "<set>\n<parameter name='prop.topology' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1706.9029941558838,

+        "y": 601.5206804871559,

+        "z": "c6a9f1ad.d0abe",

+        "wires": []

+    },

+    {

+        "id": "ea1ae816.a77cc8",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:validate-sdwan-vf-vpn-input-parameters",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-vf-vpn-input-parameters' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 964.5351715087891,

+        "y": 174.00390750169754,

+        "z": "c6a9f1ad.d0abe",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "43b512b5.67ddbc",

+        "type": "set",

+        "name": "set vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-id' value='`$prop.site-vf-index`' />\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $prop.vpn-vf-index\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",

+        "comments": "",

+        "x": 837.5313110351562,

+        "y": 847.0312881469727,

+        "z": "c6a9f1ad.d0abe",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-deactivate.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-deactivate.json
new file mode 100644
index 0000000..1426383
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-deactivate.json
@@ -0,0 +1,599 @@
+[

+    {

+        "id": "702b97b3.8ee378",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:validate-sdwan-vf-vpn-input-parameters",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-vf-vpn-input-parameters' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 767.03125,

+        "y": 208.03125,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "32955a69.c89b66",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 149.36448669433594,

+        "y": 29.031090259552002,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            [

+                "6d10fa5f.ef1ca4"

+            ]

+        ]

+    },

+    {

+        "id": "6d10fa5f.ef1ca4",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 228.6501922607422,

+        "y": 91.26919984817505,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            [

+                "90ef259f.4465b8"

+            ]

+        ]

+    },

+    {

+        "id": "90ef259f.4465b8",

+        "type": "method",

+        "name": "method sdwan-vf-operation-vpn-deactivate",

+        "xml": "<method rpc='sdwan-vf-operation-vpn-deactivate' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 240.36448669433594,

+        "y": 185.61743211746216,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            [

+                "36593f98.16e3d"

+            ]

+        ]

+    },

+    {

+        "id": "36593f98.16e3d",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 227.03115844726562,

+        "y": 370.6978039741516,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            [

+                "702b97b3.8ee378",

+                "2f3304e5.d7fd4c",

+                "6be98d9b.539ff4",

+                "a0c4b3e9.994a9",

+                "b323d31c.acd57",

+                "5f46d882.04a158",

+                "621066a9.944e88",

+                "e3e4d1bd.80fd7",

+                "b9de2d65.c5979",

+                "7f24be05.1cd31",

+                "c30bc7b4.1dd508",

+                "5edb2470.30880c",

+                "c2f4c0be.85e67",

+                "637b40e9.05bd1"

+            ]

+        ]

+    },

+    {

+        "id": "6be98d9b.539ff4",

+        "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%/generic-resource-api-dg.properties' />\n    <parameter name='contextPrefix' value='prop' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 598.395751953125,

+        "y": 296.062340259552,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "2f3304e5.d7fd4c",

+        "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/svclogic.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"sdwan-network-topology-operation-activate\"/>\n<parameter name=\"field3\" value=\"SDWAN-Activate\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 563.0936279296875,

+        "y": 252.06231260299683,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d5ced122.5325a",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 874.8193664550781,

+        "y": 379.04149866104126,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            [

+                "3739b39c.50fc6c",

+                "ac6efceb.fbae4",

+                "f4c9064c.3cb418",

+                "6663d5f5.4132fc"

+            ]

+        ]

+    },

+    {

+        "id": "3739b39c.50fc6c",

+        "type": "switchNode",

+        "name": "switch name",

+        "xml": "<switch test=\"`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1069.8194274902344,

+        "y": 308.0415253639221,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            [

+                "5651b769.f6f788"

+            ]

+        ]

+    },

+    {

+        "id": "5651b769.f6f788",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1243.8195533752441,

+        "y": 308.0415291786194,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            [

+                "8feb29dd.764fe8"

+            ]

+        ]

+    },

+    {

+        "id": "8feb29dd.764fe8",

+        "type": "set",

+        "name": "set name",

+        "xml": "<set>\n<parameter name='prop.name' value='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1406.8194389343262,

+        "y": 307.6415238380432,

+        "z": "e3dba753.67e0f8",

+        "wires": []

+    },

+    {

+        "id": "ac6efceb.fbae4",

+        "type": "switchNode",

+        "name": "switch topology",

+        "xml": "<switch test=\"`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'topology'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1080.235927581787,

+        "y": 355.70815420150757,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            [

+                "fffcbfb8.f2fa"

+            ]

+        ]

+    },

+    {

+        "id": "fffcbfb8.f2fa",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1254.2360534667969,

+        "y": 355.70815801620483,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            [

+                "aba521f0.c2f18"

+            ]

+        ]

+    },

+    {

+        "id": "aba521f0.c2f18",

+        "type": "set",

+        "name": "set topology",

+        "xml": "<set>\n<parameter name='prop.topology' value='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1417.235939025879,

+        "y": 355.30815267562866,

+        "z": "e3dba753.67e0f8",

+        "wires": []

+    },

+    {

+        "id": "a0c4b3e9.994a9",

+        "type": "for",

+        "name": "for each network-input-parameters",

+        "xml": "<for index='idx' start='0' end='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 635.9858703613281,

+        "y": 381.70817041397095,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            [

+                "d5ced122.5325a"

+            ]

+        ]

+    },

+    {

+        "id": "b9de2d65.c5979",

+        "type": "get-resource",

+        "name": "get-resource esr-thirdparty-sdnc",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = 'SDWANController' AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 649.8194122314453,

+        "y": 619.0415069162846,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            [

+                "962e611e.d3b8",

+                "d1b437fc.b72478",

+                "76cb6a63.2b7384"

+            ]

+        ]

+    },

+    {

+        "id": "962e611e.d3b8",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 894.8194122314453,

+        "y": 565.0415081977844,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            [

+                "61f20284.b32c7c"

+            ]

+        ]

+    },

+    {

+        "id": "d1b437fc.b72478",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 898.3103790283203,

+        "y": 612.6155438423157,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            [

+                "d289f55.a1fa308"

+            ]

+        ]

+    },

+    {

+        "id": "76cb6a63.2b7384",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 893.6433868408203,

+        "y": 653.9488568305969,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            [

+                "7041e417.d417bc"

+            ]

+        ]

+    },

+    {

+        "id": "d289f55.a1fa308",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",

+        "comments": "",

+        "x": 1074.8817901611328,

+        "y": 600.9012799263,

+        "z": "e3dba753.67e0f8",

+        "wires": []

+    },

+    {

+        "id": "7041e417.d417bc",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",

+        "comments": "",

+        "x": 1081.415943145752,

+        "y": 649.3880496025085,

+        "z": "e3dba753.67e0f8",

+        "wires": []

+    },

+    {

+        "id": "7f24be05.1cd31",

+        "type": "execute",

+        "name": "execute RestApiCallNode Get token",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 657.8194122314453,

+        "y": 730.0415069162846,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            [

+                "4afad198.25387",

+                "f3670767.c4d1d8"

+            ]

+        ]

+    },

+    {

+        "id": "4afad198.25387",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 896.8194847106934,

+        "y": 708.041538387537,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            [

+                "7f06af8d.b7446"

+            ]

+        ]

+    },

+    {

+        "id": "f3670767.c4d1d8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 889.0694847106934,

+        "y": 761.6844216883183,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            [

+                "5cfe33a1.e2bc8c"

+            ]

+        ]

+    },

+    {

+        "id": "7f06af8d.b7446",

+        "type": "set",

+        "name": "set token-id",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",

+        "comments": "",

+        "x": 1046.8194122314453,

+        "y": 709.0415069162846,

+        "z": "e3dba753.67e0f8",

+        "wires": []

+    },

+    {

+        "id": "5cfe33a1.e2bc8c",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing get token rest api\" />\n",

+        "comments": "",

+        "x": 1041.8194847106934,

+        "y": 761.4344827234745,

+        "z": "e3dba753.67e0f8",

+        "wires": []

+    },

+    {

+        "id": "61f20284.b32c7c",

+        "type": "set",

+        "name": "set controller data",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",

+        "comments": "",

+        "x": 1092.3194732666016,

+        "y": 553.0415081977844,

+        "z": "e3dba753.67e0f8",

+        "wires": []

+    },

+    {

+        "id": "b323d31c.acd57",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 592.3685722351074,

+        "y": 1226.5350461006165,

+        "z": "e3dba753.67e0f8",

+        "wires": []

+    },

+    {

+        "id": "f4c9064c.3cb418",

+        "type": "switchNode",

+        "name": "switch vpn-id",

+        "xml": "<switch test=\"`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'vpn-id'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1077.368392944336,

+        "y": 405.284996509552,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            [

+                "7073b26f.c2162c"

+            ]

+        ]

+    },

+    {

+        "id": "7073b26f.c2162c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1259.3684253692627,

+        "y": 405.2849953174591,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            [

+                "ec43e2d2.05e58"

+            ]

+        ]

+    },

+    {

+        "id": "ec43e2d2.05e58",

+        "type": "set",

+        "name": "set prop.vpn-id",

+        "xml": "<set>\n<parameter name='prop.vpn-id' value='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1424.3683586120605,

+        "y": 407.88499689102173,

+        "z": "e3dba753.67e0f8",

+        "wires": []

+    },

+    {

+        "id": "6663d5f5.4132fc",

+        "type": "switchNode",

+        "name": "switch tenant-id",

+        "xml": "<switch test=\"`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'tenant-id'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1088.1182556152344,

+        "y": 449.284996509552,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            [

+                "b0ecdc75.e86fd"

+            ]

+        ]

+    },

+    {

+        "id": "b0ecdc75.e86fd",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1257.1184558868408,

+        "y": 448.28499841690063,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            [

+                "aa1766f9.85f0b8"

+            ]

+        ]

+    },

+    {

+        "id": "aa1766f9.85f0b8",

+        "type": "set",

+        "name": "set prop.tenant-id",

+        "xml": "<set>\n<parameter name='prop.tenant-id' value='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />\n",

+        "comments": "",

+        "x": 1420.1183414459229,

+        "y": 447.88499307632446,

+        "z": "e3dba753.67e0f8",

+        "wires": []

+    },

+    {

+        "id": "c30bc7b4.1dd508",

+        "type": "call",

+        "name": "call sdwan-get-tenant-auth",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 626.3644866943359,

+        "y": 816.031090259552,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5edb2470.30880c",

+        "type": "execute",

+        "name": "execute RestApiCallNode delete vpn topology",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/' + $prop.vpn-id + '/topology'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"delete\"/>\n<parameter name=\"responsePrefix\" value=\"vpn-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 685.364501953125,

+        "y": 874.6978039741516,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c2f4c0be.85e67",

+        "type": "execute",

+        "name": "execute RestApiCallNode delete vpn",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-vpn-delete.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/vpn/action/batch-delete'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"vpn-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 662.8645172119141,

+        "y": 931.6980247497559,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "637b40e9.05bd1",

+        "type": "update",

+        "name": "update SDWAN VPN status to AAI",

+        "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='sdwan-vpn' \n      key='sdwan-vpn.sdwan-vpn-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >\n<parameter name='sdwan-vpn-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />\n<parameter name='operational-status' value='PendingDelete' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 658.5832214355469,

+        "y": 1156.734342098236,

+        "z": "e3dba753.67e0f8",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5f46d882.04a158",

+        "type": "set",

+        "name": "copy input data to service data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n",

+        "comments": "",

+        "x": 645,

+        "y": 998,

+        "z": "e3dba753.67e0f8",

+        "wires": []

+    },

+    {

+        "id": "621066a9.944e88",

+        "type": "set",

+        "name": "set vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",

+        "comments": "",

+        "x": 628.6666564941406,

+        "y": 1039.416741847992,

+        "z": "e3dba753.67e0f8",

+        "wires": []

+    },

+    {

+        "id": "e3e4d1bd.80fd7",

+        "type": "set",

+        "name": "set vf-module-oper-status to PendingDelete",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status'  value='PendingDelete' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />\n",

+        "comments": "",

+        "x": 684.1467742919922,

+        "y": 1089.0039992332458,

+        "z": "e3dba753.67e0f8",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-delete.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-delete.json
new file mode 100644
index 0000000..eb28774
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-delete.json
@@ -0,0 +1,159 @@
+[

+    {

+        "id": "dbaa41e6.046bf",

+        "type": "method",

+        "name": "method sdwan-vf-operation-vpn-delete",

+        "xml": "<method rpc='sdwan-vf-operation-vpn-delete' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 347.03125,

+        "y": 269.99999737739563,

+        "z": "4a211eac.9076a",

+        "wires": [

+            [

+                "2654c2fb.11dfbe"

+            ]

+        ]

+    },

+    {

+        "id": "8578b02a.61d67",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 147.0311279296875,

+        "y": 109.99999737739563,

+        "z": "4a211eac.9076a",

+        "wires": [

+            [

+                "de304501.e706b8"

+            ]

+        ]

+    },

+    {

+        "id": "de304501.e706b8",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 359.03113174438477,

+        "y": 182.00001454353333,

+        "z": "4a211eac.9076a",

+        "wires": [

+            [

+                "dbaa41e6.046bf"

+            ]

+        ]

+    },

+    {

+        "id": "2654c2fb.11dfbe",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 517.4755821228027,

+        "y": 332.4444534778595,

+        "z": "4a211eac.9076a",

+        "wires": [

+            [

+                "d773525e.57dfe",

+                "7dccf11a.58654",

+                "f366cb35.f14868",

+                "1458597e.bb0697",

+                "38c53cd1.7984d4",

+                "6bc9b9bd.b7c0e8",

+                "a3fafa89.e43bc8"

+            ]

+        ]

+    },

+    {

+        "id": "d773525e.57dfe",

+        "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/svclogic.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"sdwan-vf-module-operation-delete\"/>\n<parameter name=\"field3\" value=\"SDWAN-Delete\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 792.8088531494141,

+        "y": 193.3333694934845,

+        "z": "4a211eac.9076a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7dccf11a.58654",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 806.586784362793,

+        "y": 504.9796769618988,

+        "z": "4a211eac.9076a",

+        "wires": []

+    },

+    {

+        "id": "1458597e.bb0697",

+        "type": "set",

+        "name": "set new vpn-vf length",

+        "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length\" value=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length - 1`\"/>\n",

+        "comments": "",

+        "x": 836.1082077026367,

+        "y": 318.89519906044006,

+        "z": "4a211eac.9076a",

+        "wires": []

+    },

+    {

+        "id": "f366cb35.f14868",

+        "type": "set",

+        "name": "Remove networks from ServiceData",

+        "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].\" value=\"\"/>\n\n",

+        "comments": "",

+        "x": 876.732364654541,

+        "y": 366.8631408214569,

+        "z": "4a211eac.9076a",

+        "wires": []

+    },

+    {

+        "id": "a3fafa89.e43bc8",

+        "type": "delete",

+        "name": "delete SDWAN VPNInstance connectivity in AAI",

+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='sdwan-vpn' \n        key='sdwan-vpn.sdwan-vpn-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 914.6637077331543,

+        "y": 260.00628304481506,

+        "z": "4a211eac.9076a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "38c53cd1.7984d4",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:validate-sdwan-vf-vpn-input-parameters",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-vf-vpn-input-parameters' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 997.0312805175781,

+        "y": 131.99999928474426,

+        "z": "4a211eac.9076a",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "6bc9b9bd.b7c0e8",

+        "type": "set",

+        "name": "set vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",

+        "comments": "",

+        "x": 845.0000305175781,

+        "y": 431.00001335144043,

+        "z": "4a211eac.9076a",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-activate.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-activate.json
new file mode 100644
index 0000000..bf765d8
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-activate.json
@@ -0,0 +1,2281 @@
+[

+    {

+        "id": "aa1b72bf.43103",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 394.03125,

+        "y": 423.0742139816284,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "7552c12f.99edc",

+                "298f83f7.59d8fc",

+                "c6091bc8.bb5b78",

+                "6d78088c.cbfc88",

+                "e1a9bec.bd0de4",

+                "a2c6a4a4.2e00b8",

+                "c63182d3.fbcc4",

+                "409701be.1a03c",

+                "9e802733.d722c8",

+                "7362e1fa.b1592",

+                "46743c8f.b3fd84",

+                "8679bf14.4ac1",

+                "7f799175.fb047",

+                "131a2ffd.3a8e5",

+                "92451c4e.ffaad",

+                "a7fe1093.6d40a",

+                "e9b4c90b.c4ce98",

+                "7c031fb.d5948e",

+                "e28c61da.26a12",

+                "555b730f.2ad3ec",

+                "103790c7.a4e84f",

+                "726be50f.6f16fc",

+                "e2c4dac5.6f39e8",

+                "675842c8.f4343c",

+                "86ffb9d1.271bf8",

+                "7a2f98d7.5ecea8",

+                "83739943.858e68",

+                "93891afe.aeea78",

+                "bc9fd33d.1cf95"

+            ]

+        ]

+    },

+    {

+        "id": "5ef2c8ad.bc5ff8",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 118.50391006469727,

+        "y": 72,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "988b9fb.b96a56"

+            ]

+        ]

+    },

+    {

+        "id": "988b9fb.b96a56",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 249.78960037231445,

+        "y": 121.23810863494873,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "db46e718.9e34f8"

+            ]

+        ]

+    },

+    {

+        "id": "db46e718.9e34f8",

+        "type": "method",

+        "name": "method sdwan-vf-operation-wanport-activate",

+        "xml": "<method rpc='sdwan-vf-operation-wanport-activate' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 252.9325294494629,

+        "y": 206.00003242492676,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "aa1b72bf.43103"

+            ]

+        ]

+    },

+    {

+        "id": "298f83f7.59d8fc",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 823.0351600646973,

+        "y": 221.07811641693115,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "d5c2444e.40f148"

+            ]

+        ]

+    },

+    {

+        "id": "d5c2444e.40f148",

+        "type": "switchNode",

+        "name": "switch this vnf-id == input vnf-id",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\">    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1075.0352516174316,

+        "y": 219.744779586792,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "2d2f666f.01836a"

+            ]

+        ]

+    },

+    {

+        "id": "cffa7667.9fa518",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1446.7017402648926,

+        "y": 221.74478244781494,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "2d2f666f.01836a",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1293.3685684204102,

+        "y": 221.74476146697998,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "cffa7667.9fa518"

+            ]

+        ]

+    },

+    {

+        "id": "7552c12f.99edc",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 837.455753326416,

+        "y": 176.5819854736328,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "3a4ab2c5.34288e"

+            ]

+        ]

+    },

+    {

+        "id": "3a4ab2c5.34288e",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1024.1224327087402,

+        "y": 175.915283203125,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "9c32c1a6.b8f8d"

+            ]

+        ]

+    },

+    {

+        "id": "9c32c1a6.b8f8d",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n    <parameter name=\"error-message\" value=\"There are no VNFs in MD-SAL\" />\n",

+        "comments": "",

+        "x": 1205.7890586853027,

+        "y": 175.915283203125,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "90dd0a6d.b97718",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1476.0351676940918,

+        "y": 391.0781068508513,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "6395826d.fca69c"

+            ]

+        ]

+    },

+    {

+        "id": "9272b53d.a87e88",

+        "type": "switchNode",

+        "name": "switch vf-module-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1984.3210220336914,

+        "y": 358.64962673187256,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "e056b855.39d1d8"

+            ]

+        ]

+    },

+    {

+        "id": "7e4a72fa.4d4f3c",

+        "type": "set",

+        "name": "set vf-module-length",

+        "xml": "<set>\n<parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n\n",

+        "comments": "",

+        "x": 1462.6067924499512,

+        "y": 354.855993270874,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "f8dd3a29.d23a98",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1266.908187866211,

+        "y": 368.2368783657439,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "90dd0a6d.b97718",

+                "7e4a72fa.4d4f3c",

+                "e9fcde91.f8ee4",

+                "15ae932b.8eaafd"

+            ]

+        ]

+    },

+    {

+        "id": "da9482b8.2c7db",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1122.5511436462402,

+        "y": 368.3003663723357,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "f8dd3a29.d23a98"

+            ]

+        ]

+    },

+    {

+        "id": "c6091bc8.bb5b78",

+        "type": "switchNode",

+        "name": "switch vf-modules.vf-module_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 886.5511255264282,

+        "y": 295.3003787994385,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "da9482b8.2c7db",

+                "75404cd4.467764",

+                "b9120614.fcff58"

+            ]

+        ]

+    },

+    {

+        "id": "75404cd4.467764",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1128.035161972046,

+        "y": 267.0781078338623,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "73c9cf7f.c3fda"

+            ]

+        ]

+    },

+    {

+        "id": "b9120614.fcff58",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1130.0663509368896,

+        "y": 304.10941886901855,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "73c9cf7f.c3fda"

+            ]

+        ]

+    },

+    {

+        "id": "73c9cf7f.c3fda",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vf-module-operation-input.vf-module-request-input.vf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 1287.8438663482666,

+        "y": 284.9983673095703,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "e056b855.39d1d8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2188.0352630615234,

+        "y": 357.07813313556835,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "3493694e.e41bb6"

+            ]

+        ]

+    },

+    {

+        "id": "3493694e.e41bb6",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2358.378559112549,

+        "y": 361.164268522989,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "8b2508c0.364288",

+                "1dfeb945.730fd7",

+                "fe377f26.34769"

+            ]

+        ]

+    },

+    {

+        "id": "8b2508c0.364288",

+        "type": "set",

+        "name": "set tmp.vidx and ctx.vnf-data",

+        "xml": "<set>\n<parameter name='tmp.vidx' value='`$idx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />\n",

+        "comments": "",

+        "x": 2609.2652130126953,

+        "y": 331.50668144226074,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "1dfeb945.730fd7",

+        "type": "set",

+        "name": "set vf-module-request-input.",

+        "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />\n\n",

+        "comments": "",

+        "x": 2603.71150970459,

+        "y": 376.16432145191357,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "33f87d4b.131732",

+        "type": "switchNode",

+        "name": "switch ActivateSDWANDeviceInstance",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`\">\n    ",

+        "comments": "",

+        "outputs": 1,

+        "x": 1783.5352668762207,

+        "y": 457.07813835144043,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "19b41c70.4beab4"

+            ]

+        ]

+    },

+    {

+        "id": "19b41c70.4beab4",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2012.5350151062012,

+        "y": 456.07811546325684,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "1a6abe61.332a02"

+            ]

+        ]

+    },

+    {

+        "id": "1a6abe61.332a02",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1967.9479293823242,

+        "y": 518.0742564201355,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "4f4f0899.d407e8"

+            ]

+        ]

+    },

+    {

+        "id": "4f4f0899.d407e8",

+        "type": "for",

+        "name": "for loop didx - Get deviceId from servicedata",

+        "xml": "<for index=\"didx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`\">",

+        "comments": "",

+        "outputs": 1,

+        "x": 2249.2816829681396,

+        "y": 528.0742769241333,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "3ef068c9.f46d98"

+            ]

+        ]

+    },

+    {

+        "id": "6395826d.fca69c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1777.5352249145508,

+        "y": 362.0781407649629,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "9272b53d.a87e88"

+            ]

+        ]

+    },

+    {

+        "id": "c29879dc.c33238",

+        "type": "comment",

+        "name": "Get devices",

+        "info": "",

+        "comments": "",

+        "x": 1775.5351600646973,

+        "y": 427.07811641693115,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "e9fcde91.f8ee4",

+        "type": "set",

+        "name": "set prop.site.deviceId_length",

+        "xml": "<set>\n<parameter name='prop.site.deviceId_length' value='0' />\n",

+        "comments": "",

+        "x": 1489.0351600646973,

+        "y": 319.07811641693115,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "6d78088c.cbfc88",

+        "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%/generic-resource-api-dg.properties' />\n    <parameter name='contextPrefix' value='prop' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 838.0352058410645,

+        "y": 384.07812309265137,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "58514bba.536ea4",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 2548.281505584717,

+        "y": 522.0744781494141,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "6a60b8bf.296158"

+            ]

+        ]

+    },

+    {

+        "id": "6a60b8bf.296158",

+        "type": "switchNode",

+        "name": "switch deviceId",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].name == 'deviceId'`\">\n    ",

+        "comments": "",

+        "outputs": 1,

+        "x": 2708.2817611694336,

+        "y": 524.0743312835693,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "6bb682b3.a31adc"

+            ]

+        ]

+    },

+    {

+        "id": "6bb682b3.a31adc",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2860.2819328308105,

+        "y": 523.0743312835693,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "6989c0f.96b544"

+            ]

+        ]

+    },

+    {

+        "id": "6989c0f.96b544",

+        "type": "set",

+        "name": "set deviceId",

+        "xml": "<set>\n<parameter name='prop.site.deviceId[$prop.site.deviceId_length]' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].value`' />\n<parameter name='prop.site.deviceId_length' value='`$prop.site.deviceId_length + 1`' />\n",

+        "comments": "",

+        "x": 3000.281936645508,

+        "y": 522.6742858886719,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "fe377f26.34769",

+        "type": "call",

+        "name": "call sdwan-get-wan-param",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-wan-param' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2595.0079612731934,

+        "y": 423.00392010761425,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "48f81161.66243",

+        "type": "switchNode",

+        "name": "switch ActivateSiteInstance",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.request-information.request-action == 'ActivateSiteInstance'`\">\n    ",

+        "comments": "",

+        "outputs": 1,

+        "x": 1763.507797241211,

+        "y": 565.7539291381836,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "c8d462fc.6ddb3"

+            ]

+        ]

+    },

+    {

+        "id": "c8d462fc.6ddb3",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2005.5076446533203,

+        "y": 596.75390625,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "92bd8825.90b9a8"

+            ]

+        ]

+    },

+    {

+        "id": "92bd8825.90b9a8",

+        "type": "set",

+        "name": "set tmp.siteVidx",

+        "xml": "<set>\n<parameter name='tmp.siteVidx' value='`$idx`' />\n<parameter name='ctx.site.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].`' />\n",

+        "comments": "",

+        "x": 2228.237594604492,

+        "y": 624.1824264526367,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "3ef068c9.f46d98",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2451.7578125,

+        "y": 617.0039043426514,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "a2711e1c.d6e09",

+                "113b21af.23a45e"

+            ]

+        ]

+    },

+    {

+        "id": "a2711e1c.d6e09",

+        "type": "switchNode",

+        "name": "switch name (DeviceName)",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].name == 'name'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2677.425521850586,

+        "y": 618.3374032974243,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "661373f5.be831c"

+            ]

+        ]

+    },

+    {

+        "id": "661373f5.be831c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2879.426013946533,

+        "y": 612.3374633789062,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "e8b03259.bbcb"

+            ]

+        ]

+    },

+    {

+        "id": "e8b03259.bbcb",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2697.7590560913086,

+        "y": 695.3374328613281,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "4554c798.aa2dd8",

+                "bf88a576.7aa2c8"

+            ]

+        ]

+    },

+    {

+        "id": "4554c798.aa2dd8",

+        "type": "switchNode",

+        "name": "switch deviceName match",

+        "xml": "<switch test=\"`$prop.wan.deviceName == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].value`\">\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2903.42578125,

+        "y": 696.3374967575073,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "8f8b4c45.50538"

+            ]

+        ]

+    },

+    {

+        "id": "8f8b4c45.50538",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3086.7597618103027,

+        "y": 698.3375577926636,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "b9108ee7.e5b06"

+            ]

+        ]

+    },

+    {

+        "id": "b9108ee7.e5b06",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2986.0917205810547,

+        "y": 770.3373403549194,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "4d1bca38.4b9934",

+                "ad38b737.99a528",

+                "d2df96f9.05ab08"

+            ]

+        ]

+    },

+    {

+        "id": "ad38b737.99a528",

+        "type": "set",

+        "name": "set tmp.devicevidx",

+        "xml": "<set>\n<parameter name='tmp.devicevidx' value='`$idx`' />\n\n",

+        "comments": "",

+        "x": 3236.84765625,

+        "y": 891.0104351043701,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "26e95066.5bddc",

+        "type": "switchNode",

+        "name": "switch deviceId",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].name == 'deviceId'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3535.515853881836,

+        "y": 831.677375793457,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "1f6de92a.592947"

+            ]

+        ]

+    },

+    {

+        "id": "1f6de92a.592947",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3688.5162239074707,

+        "y": 832.6774530410767,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "49ba52e1.34347c"

+            ]

+        ]

+    },

+    {

+        "id": "49ba52e1.34347c",

+        "type": "set",

+        "name": "set prop.wan.deviceId",

+        "xml": "<set>\n<parameter name='prop.wan.deviceId' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].value`' />\n",

+        "comments": "",

+        "x": 3857.516830444336,

+        "y": 831.2774877548218,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "4d1bca38.4b9934",

+        "type": "for",

+        "name": "for loop deviceidx - Get deviceId from servicedata",

+        "xml": "<for index=\"deviceidx\" start=\"0\" end=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`\">\n    \n    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3279.045753479004,

+        "y": 766.0417041778564,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "9729ab27.7939b8"

+            ]

+        ]

+    },

+    {

+        "id": "9729ab27.7939b8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 3356.046485900879,

+        "y": 830.0418033599854,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "26e95066.5bddc"

+            ]

+        ]

+    },

+    {

+        "id": "6cd6d96e.5cd3a8",

+        "type": "comment",

+        "name": "Get siteId from site resource created for this service",

+        "info": "",

+        "comments": "",

+        "x": 936.7578377723694,

+        "y": 440.0039186477661,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "e1a9bec.bd0de4",

+        "type": "for",

+        "name": "for loop sidx - Get siteId from servicedata",

+        "xml": "<for index=\"sidx\" start=\"0\" end=\"`$ctx.site.vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`\">\n    \n    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 899.7578353881836,

+        "y": 478.6705856323242,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "d8025975.c452c8"

+            ]

+        ]

+    },

+    {

+        "id": "d8025975.c452c8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1161.7680282592773,

+        "y": 479.34741020202637,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "7ae7755a.84d27c"

+            ]

+        ]

+    },

+    {

+        "id": "7ae7755a.84d27c",

+        "type": "switchNode",

+        "name": "switch siteId",

+        "xml": "<switch test=\"`$ctx.site.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$sidx].name == 'siteId'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1330.7581634521484,

+        "y": 479.67071628570557,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "6e34759a.33dd3c"

+            ]

+        ]

+    },

+    {

+        "id": "6e34759a.33dd3c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1264.7586250305176,

+        "y": 546.6707553863525,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "4cc37cb0.d42884"

+            ]

+        ]

+    },

+    {

+        "id": "4cc37cb0.d42884",

+        "type": "set",

+        "name": "set prop.wan.siteId",

+        "xml": "<set>\n<parameter name='prop.wan.siteId' value='`$ctx.site.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$sidx].value`' />\n\n\n",

+        "comments": "",

+        "x": 1438.7585945129395,

+        "y": 543.2706317901611,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "83739943.858e68",

+        "type": "get-resource",

+        "name": "get-resource esr-thirdparty-sdnc",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 807.7578125,

+        "y": 654.7539043426514,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "a8fa84ce.eb12f8",

+                "d18bc7f4.341358",

+                "3bf2ecab.90fcb4"

+            ]

+        ]

+    },

+    {

+        "id": "a8fa84ce.eb12f8",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1039.7578964233398,

+        "y": 618.753927230835,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "9b3d8e62.faaef"

+            ]

+        ]

+    },

+    {

+        "id": "d18bc7f4.341358",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1042.248779296875,

+        "y": 654.3279638290405,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "7795db23.93cf44"

+            ]

+        ]

+    },

+    {

+        "id": "3bf2ecab.90fcb4",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1037.581787109375,

+        "y": 690.661322593689,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "dde2f622.170a38"

+            ]

+        ]

+    },

+    {

+        "id": "dde2f622.170a38",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",

+        "comments": "",

+        "x": 1191.3542785644531,

+        "y": 688.1004095077515,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "7795db23.93cf44",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",

+        "comments": "",

+        "x": 1187.8201751708984,

+        "y": 652.6136512756348,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "9b3d8e62.faaef",

+        "type": "set",

+        "name": "set controller data",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",

+        "comments": "",

+        "x": 1195.2580108642578,

+        "y": 617.7538194656372,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "93891afe.aeea78",

+        "type": "execute",

+        "name": "execute RestApiCallNode Get token",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 822.2679443359375,

+        "y": 742.4309062957764,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "5c43c4aa.9264cc",

+                "33df2014.cd50d"

+            ]

+        ]

+    },

+    {

+        "id": "5c43c4aa.9264cc",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1057.2680702209473,

+        "y": 728.4308948516846,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "28f385cf.49854a"

+            ]

+        ]

+    },

+    {

+        "id": "28f385cf.49854a",

+        "type": "set",

+        "name": "set token-id",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",

+        "comments": "",

+        "x": 1199.2680778503418,

+        "y": 727.4308958053589,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "112c2ecc.277fc1",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing get token rest api\" />\n",

+        "comments": "",

+        "x": 1205.2680778503418,

+        "y": 764.8238840103149,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "33df2014.cd50d",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1056.5180702209473,

+        "y": 764.0738019943237,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "112c2ecc.277fc1"

+            ]

+        ]

+    },

+    {

+        "id": "bc9fd33d.1cf95",

+        "type": "call",

+        "name": "call sdwan-get-tenant-auth",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 797.2676391601562,

+        "y": 797.7639751434326,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "addc3c45.8b358",

+        "type": "comment",

+        "name": "Create port",

+        "info": "",

+        "comments": "",

+        "x": 1084.7578392028809,

+        "y": 826.2539043426514,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "7a2f98d7.5ecea8",

+        "type": "execute",

+        "name": "execute RestApiCallNode device port create",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-port.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"portResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 856.0918731689453,

+        "y": 883.8098802566528,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "fd994a2a.92c728",

+                "92fe968a.87b558"

+            ]

+        ]

+    },

+    {

+        "id": "92fe968a.87b558",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1105.091932296753,

+        "y": 859.8099217414856,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "3a8360ac.8e93a"

+            ]

+        ]

+    },

+    {

+        "id": "fd994a2a.92c728",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1153.0919361114502,

+        "y": 897.8100881576538,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "c9adde1d.a5805"

+            ]

+        ]

+    },

+    {

+        "id": "3a8360ac.8e93a",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create device port rest api\" />\n",

+        "comments": "",

+        "x": 1249.0922660827637,

+        "y": 858.8099212646484,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "c9adde1d.a5805",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1300.091947555542,

+        "y": 898.8099269866943,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a2c6a4a4.2e00b8",

+        "type": "for",

+        "name": "for loop idx - VF-module input parameters",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 861.4032020568848,

+        "y": 1001.4548950195312,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "925ea7f2.d972f8"

+            ]

+        ]

+    },

+    {

+        "id": "925ea7f2.d972f8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1105.2991561889648,

+        "y": 1000.3768668174744,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "47d44aef.50cf54"

+            ]

+        ]

+    },

+    {

+        "id": "47d44aef.50cf54",

+        "type": "switchNode",

+        "name": "switch IPMode",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'IPMode'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1253.4164009094238,

+        "y": 1002.3503503799438,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "14cc8583.77380a"

+            ]

+        ]

+    },

+    {

+        "id": "14cc8583.77380a",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1401.4163856506348,

+        "y": 999.3503150939941,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "1dbcdc9e.2ab813"

+            ]

+        ]

+    },

+    {

+        "id": "1dbcdc9e.2ab813",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1562.4032516479492,

+        "y": 1001.2326736450195,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "193e5621.82d8aa",

+                "c01114ca.b0a928"

+            ]

+        ]

+    },

+    {

+        "id": "193e5621.82d8aa",

+        "type": "switchNode",

+        "name": "switch portType GE match",

+        "xml": "<switch test=\"`GE == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].value`\">\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1764.0699272155762,

+        "y": 1002.2327299118042,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "bc174d71.6f73c"

+            ]

+        ]

+    },

+    {

+        "id": "bc174d71.6f73c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1949.4041366577148,

+        "y": 993.2328510284424,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "b0b3b2d7.c3aed"

+            ]

+        ]

+    },

+    {

+        "id": "c01114ca.b0a928",

+        "type": "switchNode",

+        "name": "switch portType LTE match",

+        "xml": "<switch test=\"`LTE == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].value`\">\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1763.4032936096191,

+        "y": 1064.232717514038,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "acc83fa1.efe81"

+            ]

+        ]

+    },

+    {

+        "id": "acc83fa1.efe81",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1964.4033832550049,

+        "y": 1068.2326908111572,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "30dfd74d.405928"

+            ]

+        ]

+    },

+    {

+        "id": "e31d4c6.c361fb",

+        "type": "comment",

+        "name": "set linkType as Ethernet",

+        "info": "",

+        "comments": "",

+        "x": 2189.4034156799316,

+        "y": 946.2327260971069,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "60995785.6141d8",

+        "type": "comment",

+        "name": "set linkType as Cellular",

+        "info": "",

+        "comments": "",

+        "x": 2200.625476837158,

+        "y": 1033.2326751947403,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "86ffb9d1.271bf8",

+        "type": "execute",

+        "name": "execute RestApiCallNode device port create",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-port.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"portResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 877.5149421691895,

+        "y": 1130.7885818481445,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "fa0604ac.0f5bc8",

+                "2afd5b9a.0c9054"

+            ]

+        ]

+    },

+    {

+        "id": "2afd5b9a.0c9054",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1126.515001296997,

+        "y": 1106.7886233329773,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "fd5d5c5b.4f78f"

+            ]

+        ]

+    },

+    {

+        "id": "fa0604ac.0f5bc8",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1126.515001296997,

+        "y": 1144.7887878417969,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "2654b242.f97d8e"

+            ]

+        ]

+    },

+    {

+        "id": "fd5d5c5b.4f78f",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create device port rest api\" />\n",

+        "comments": "",

+        "x": 1270.5153350830078,

+        "y": 1105.7886228561401,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "2654b242.f97d8e",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1273.5150127410889,

+        "y": 1145.7886266708374,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b0b3b2d7.c3aed",

+        "type": "set",

+        "name": "set prop.wan.linkType Ethernet",

+        "xml": "<set>\n<parameter name='prop.wan.linkType' value=\"Ethernet\" />\n\n",

+        "comments": "",

+        "x": 2176.1807975769043,

+        "y": 986.6770839691162,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "30dfd74d.405928",

+        "type": "set",

+        "name": "set prop.wan.linkType Cellular",

+        "xml": "<set>\n<parameter name='prop.wan.linkType' value=\"Cellular\" />",

+        "comments": "",

+        "x": 2186.1808433532715,

+        "y": 1066.6770544052124,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "e2c4dac5.6f39e8",

+        "type": "execute",

+        "name": "execute RestApiCallNode get transport network info",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/network-orchestration-resources'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"get\"/>\n<parameter name=\"responsePrefix\" value=\"transportNetworksResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 908.5352516174316,

+        "y": 1220.0782823562622,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "7a45df8a.7903b",

+                "36ac3856.141338"

+            ]

+        ]

+    },

+    {

+        "id": "555b730f.2ad3ec",

+        "type": "execute",

+        "name": "execute RestApiCallNode wan port create",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-wan-port.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/transport-network-ports'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"wanPortResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 881.5354232788086,

+        "y": 1604.078293800354,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "3f91502c.081fa",

+                "6ca447f7.7cb2c8"

+            ]

+        ]

+    },

+    {

+        "id": "cb6170fa.31a46",

+        "type": "set",

+        "name": "set prop.wan.transportNetworkId",

+        "xml": "<set>\n<parameter name='prop.wan.transportNetworkId' value='`$transportNetworksResp.data.transportNetworks[$tidx].id`' />\n",

+        "comments": "",

+        "x": 1776.5262603759766,

+        "y": 1335.0683436393738,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "409701be.1a03c",

+        "type": "execute",

+        "name": "execute split ip and mask",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$prop.wan.ipAddress`'/>\n<parameter name=\"regex\" value=\"/\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"ipandMask\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 828.5250358581543,

+        "y": 1396.4012417793274,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "33b19903.96b096",

+                "f243f0f3.7944c"

+            ]

+        ]

+    },

+    {

+        "id": "f243f0f3.7944c",

+        "type": "failure",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1029.5250549316406,

+        "y": 1374.4012331962585,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "f9bdce70.a5d11"

+            ]

+        ]

+    },

+    {

+        "id": "33b19903.96b096",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1029.525058746338,

+        "y": 1415.4012370109558,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "7b17ef62.bca26"

+            ]

+        ]

+    },

+    {

+        "id": "f9bdce70.a5d11",

+        "type": "set",

+        "name": "set ipAddress prefixLength",

+        "xml": "<set>\n<parameter name='prop.wan.ip-address' value='`$ipandMask[0]`' />\n<parameter name='prop.wan.prefixLength' value='`$ipandMask[1]`' />",

+        "comments": "",

+        "x": 1226.525074005127,

+        "y": 1372.4012331962585,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "7b17ef62.bca26",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='error-code' value='' />\n<parameter name='error-message' value=\"An error occured while splitting sna1_route\" />\n",

+        "comments": "",

+        "x": 1184.5250663757324,

+        "y": 1412.4012360572815,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "5dfad1bf.4368f",

+        "type": "switchNode",

+        "name": "switch transportNetworkName same",

+        "xml": "<switch test=\"`$transportNetworksResp.data.transportNetworks[$tidx].name == $prop.wan.transportNetworkName`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1364.5359382629395,

+        "y": 1287.7447051107883,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "2b9a741b.c318cc"

+            ]

+        ]

+    },

+    {

+        "id": "2b9a741b.c318cc",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1611.5355377197266,

+        "y": 1286.744643688202,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "cb6170fa.31a46"

+            ]

+        ]

+    },

+    {

+        "id": "844b5fe4.d3379",

+        "type": "set",

+        "name": "set prop.wan.wanPortId",

+        "xml": "<set>\n<parameter name='prop.wan.wanPortId' value='`$wanPortResp.success[0].id`' />\n",

+        "comments": "",

+        "x": 1538.859546661377,

+        "y": 1622.735113143921,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "c63182d3.fbcc4",

+        "type": "set",

+        "name": "set prop.wan.devicePortId",

+        "xml": "<set>\n<parameter name='prop.wan.devicePortId' value='`$portResp.success[0].id`' />\n",

+        "comments": "",

+        "x": 823.526050567627,

+        "y": 1176.0681076049805,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "d1467d26.a7bbb",

+        "type": "comment",

+        "name": "Get network id",

+        "info": "",

+        "comments": "",

+        "x": 1016.5349006652832,

+        "y": 1185.411289215088,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "4696daa4.7bc6d4",

+        "type": "comment",

+        "name": "Create wan port",

+        "info": "",

+        "comments": "",

+        "x": 812.5349235534668,

+        "y": 1361.411374092102,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "6ca447f7.7cb2c8",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1153.5351524353027,

+        "y": 1578.077886581421,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "6062b706.984518"

+            ]

+        ]

+    },

+    {

+        "id": "3f91502c.081fa",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1151.5350723266602,

+        "y": 1625.078049659729,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "9419758e.c47e08"

+            ]

+        ]

+    },

+    {

+        "id": "9419758e.c47e08",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1320.5350799560547,

+        "y": 1625.0778864622116,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "844b5fe4.d3379"

+            ]

+        ]

+    },

+    {

+        "id": "88101c47.a8c7e",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create wan port rest api\" />\n",

+        "comments": "",

+        "x": 1492.535488128662,

+        "y": 1579.0778856277466,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "36ac3856.141338",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1210.534755706787,

+        "y": 1199.0777764320374,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "b8093d9a.685ef"

+            ]

+        ]

+    },

+    {

+        "id": "7a45df8a.7903b",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1210.5347518920898,

+        "y": 1239.077941417694,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "f5cec88.5afd738"

+            ]

+        ]

+    },

+    {

+        "id": "f5cec88.5afd738",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1354.534767150879,

+        "y": 1238.077778339386,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b8093d9a.685ef",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Get transport network info rest api\" />\n",

+        "comments": "",

+        "x": 1352.5350875854492,

+        "y": 1198.0777764320374,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "86b35264.46fea",

+        "type": "comment",

+        "name": "TODO: split ip/mask",

+        "info": "",

+        "comments": "",

+        "x": 1225.5347061157227,

+        "y": 1334.5815052986145,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "85c6d777.738908",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1114.5355415344238,

+        "y": 1286.411331653595,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "5dfad1bf.4368f"

+            ]

+        ]

+    },

+    {

+        "id": "675842c8.f4343c",

+        "type": "for",

+        "name": "for loop tidx - Get transportNetwork ID",

+        "xml": "<for index=\"tidx\" start=\"0\" end=\"`$transportNetworksResp.data.transportNetworks_length`\">\n    \n    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 870.5352210998535,

+        "y": 1289.411153793335,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "85c6d777.738908"

+            ]

+        ]

+    },

+    {

+        "id": "6062b706.984518",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1313.5389022827148,

+        "y": 1576.5816287994385,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9e802733.d722c8",

+        "type": "for",

+        "name": "for loop idx - VF-module input parameters",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 871.8372230529785,

+        "y": 1481.6666259765625,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "7d8af107.52b1d"

+            ]

+        ]

+    },

+    {

+        "id": "7d8af107.52b1d",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1115.7331771850586,

+        "y": 1480.5885977745056,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "58ac9d77.f3c914"

+            ]

+        ]

+    },

+    {

+        "id": "58ac9d77.f3c914",

+        "type": "switchNode",

+        "name": "switch IPMode",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'IPMode'`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1263.8504219055176,

+        "y": 1482.562081336975,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "463d34c6.f0572c"

+            ]

+        ]

+    },

+    {

+        "id": "463d34c6.f0572c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1411.8504066467285,

+        "y": 1479.5620460510254,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "f6e7d7b8.9804f8"

+            ]

+        ]

+    },

+    {

+        "id": "f6e7d7b8.9804f8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1568.8372230529785,

+        "y": 1481.4443969726562,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "7986250.a52d3dc",

+                "80947f3.e50c28"

+            ]

+        ]

+    },

+    {

+        "id": "7986250.a52d3dc",

+        "type": "switchNode",

+        "name": "switch IPMode Static match",

+        "xml": "<switch test=\"`Static == $prop.wan.IPMode`\">\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1774.50394821167,

+        "y": 1482.4444608688354,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "c5b82352.18946"

+            ]

+        ]

+    },

+    {

+        "id": "80947f3.e50c28",

+        "type": "switchNode",

+        "name": "switch IPMode DHCP match",

+        "xml": "<switch test=\"`DHCP == $prop.wan.IPMode`\">\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1773.837314605713,

+        "y": 1544.4444484710693,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "ca30d3ba.e4aa5"

+            ]

+        ]

+    },

+    {

+        "id": "8679bf14.4ac1",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 798.4032974243164,

+        "y": 2124.5665798187256,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "7362e1fa.b1592",

+        "type": "set",

+        "name": "set device PortId to service data",

+        "xml": "<set>\n<parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='devicePortId' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$prop.wan.devicePortId`' />\n",

+        "comments": "",

+        "x": 858.0597534179688,

+        "y": 1779.222749710083,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "726be50f.6f16fc",

+        "type": "update",

+        "name": "update SDWAN wan port instance configuration in AAI",

+        "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='wan-port-config' \n      key='wan-port-config.wan-port-config-id = $vf-module-topology-operation-input.vnf-information.vnf-id' >\n<parameter name=\"wan-port-config-id\" value=\"`$vf-module-topology-operation-input.vnf-information.vnf-id`\" />\n<parameter name='operational-status' value='Active' />\n<parameter name='device-port-id' value='`$prop.wan.devicePortId`' />\n<parameter name='wan-port-id' value='`$prop.wan.wanPortId`' />\n<parameter name='model-customization-id' value='`$vf-module-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vf-module-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vf-module-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 925.7223663330078,

+        "y": 2090.3707427978516,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "46743c8f.b3fd84",

+        "type": "set",

+        "name": "set wan portId to service data",

+        "xml": "<set>\n<parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='wanPortId' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$prop.wan.wanPortId`' />\n",

+        "comments": "",

+        "x": 864.0687103271484,

+        "y": 1869.4818668365479,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "35191a02.d89a16",

+        "type": "set",

+        "name": "set ipAddress prefixLength",

+        "xml": "<set>\n<parameter name='prop.wan.ip-address' value=\"\" />\n<parameter name='prop.wan.prefixLength' value=\"\" />\n<parameter name='prop.wan.providerIpAddress' value=\"\" />\n<parameter name='prop.wan.IpMode' value=\"static\" />\n<parameter name='prop.route.nextHopType' value=\"ip-address\" />\n<parameter name='prop.route.ipAddress' value=\"`$prop.wan.ipAddress`\" />\n\n",

+        "comments": "",

+        "x": 2158.292377471924,

+        "y": 1476.8992538452148,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "103790c7.a4e84f",

+        "type": "execute",

+        "name": "execute RestApiCallNode underlay route",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-underlay.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/routing-protocol/static/action/batch-delete'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"underlayspokeResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 894.6254920959473,

+        "y": 1719.8992919921875,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "cb65e9dc.cb7d28",

+                "509b7bd.b23cb84"

+            ]

+        ]

+    },

+    {

+        "id": "cb65e9dc.cb7d28",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1144.6253185272217,

+        "y": 1704.8995790481567,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "aae088c9.6e82a8"

+            ]

+        ]

+    },

+    {

+        "id": "509b7bd.b23cb84",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1146.625638961792,

+        "y": 1748.8995885849,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "537341f9.e0df6"

+            ]

+        ]

+    },

+    {

+        "id": "aae088c9.6e82a8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1290.209774017334,

+        "y": 1694.2653658390045,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "537341f9.e0df6",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1291.2095317840576,

+        "y": 1741.2653667926788,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d38fbe54.6487b",

+        "type": "set",

+        "name": "set ipAddress prefixLength",

+        "xml": "<set>\n<parameter name='prop.route.nextHopType' value=\"outbound-interface\" />\n<parameter name='prop.wan.IpMode' value=\"DHCP\" />\n<parameter name='prop.route.ipAddress' value=\"\" />\n",

+        "comments": "",

+        "x": 2161.7539710998535,

+        "y": 1548.0000038146973,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "15ae932b.8eaafd",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1469.5039100646973,

+        "y": 430,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "33f87d4b.131732",

+                "48f81161.66243"

+            ]

+        ]

+    },

+    {

+        "id": "113b21af.23a45e",

+        "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/svclogic-device-param.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].name'\"/>\n<parameter name=\"field3\" value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].name`'/>\n\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2628.8371620178223,

+        "y": 578,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "bf88a576.7aa2c8",

+        "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/svclogic-device-name.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"'prop.wan.deviceName'\"/>\n<parameter name=\"field3\" value='`$prop.wan.deviceName`'/>\n<parameter name=\"field4\" value=\"'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].value'\"/>\n<parameter name=\"field5\" value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].value`'/>\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2880.8371620178223,

+        "y": 661,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d2df96f9.05ab08",

+        "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/svclogic-last.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"'tmp.devicevidx'\"/>\n<parameter name=\"field3\" value='`$tmp.devicevidx`'/>\n\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 3216.8371620178223,

+        "y": 930,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c5b82352.18946",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1973.5039100646973,

+        "y": 1476.6666259765625,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "35191a02.d89a16"

+            ]

+        ]

+    },

+    {

+        "id": "ca30d3ba.e4aa5",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1970.5039100646973,

+        "y": 1554.6666259765625,

+        "z": "81e8e679.1e5f48",

+        "wires": [

+            [

+                "d38fbe54.6487b"

+            ]

+        ]

+    },

+    {

+        "id": "92451c4e.ffaad",

+        "type": "set",

+        "name": "hardcode device port resp",

+        "xml": "<set>\n<parameter name='portResp.success[0].id' value=\"12345\" />\n",

+        "comments": "",

+        "x": 806.5352172851562,

+        "y": 945.5313758850098,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "7f799175.fb047",

+        "type": "set",

+        "name": "increment wan-port param length",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length + 1`' />\n",

+        "comments": "",

+        "x": 866.5351791381836,

+        "y": 1824.0313453674316,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "131a2ffd.3a8e5",

+        "type": "set",

+        "name": "increment wan-port param length",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length + 1`' />\n",

+        "comments": "",

+        "x": 874.5351791381836,

+        "y": 1909.0313472747803,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "e9b4c90b.c4ce98",

+        "type": "set",

+        "name": "set vf-module-id and vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",

+        "comments": "",

+        "x": 894.0352058410645,

+        "y": 2003.0313870636746,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "7c031fb.d5948e",

+        "type": "set",

+        "name": "set vf-module-level-oper-status",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status'  value='Active' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />",

+        "comments": "",

+        "x": 860.0352058410645,

+        "y": 2051.531388017349,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "a7fe1093.6d40a",

+        "type": "set",

+        "name": "copy input data in service-data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n",

+        "comments": "",

+        "x": 858.0351600646973,

+        "y": 1955.2813415527344,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "7b8751b7.f6ba8",

+        "type": "set",

+        "name": "copy input data to service data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n",

+        "comments": "",

+        "x": 2064.0351600646973,

+        "y": 2255.03125,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "5ef5bb05.ba3244",

+        "type": "set",

+        "name": "set vf-module-id and vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",

+        "comments": "",

+        "x": 2098.3383598327637,

+        "y": 2298.8343591690063,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "7b8dfcbe.827b44",

+        "type": "set",

+        "name": "set vf-module-level-oper-status",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status'  value='Active' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />",

+        "comments": "",

+        "x": 2065.338394165039,

+        "y": 2337.8344264030457,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    },

+    {

+        "id": "e28c61da.26a12",

+        "type": "set",

+        "name": "hardcode port resp",

+        "xml": "<set>\n<parameter name='portResp.success[0].id' value=\"12345\" />\n",

+        "comments": "",

+        "x": 779.5039901733398,

+        "y": 842.3333721160889,

+        "z": "81e8e679.1e5f48",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-create.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-create.json
new file mode 100644
index 0000000..f862a2d
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-create.json
@@ -0,0 +1,533 @@
+[

+    {

+        "id": "bc28da2b.7303d8",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 323.0104064941406,

+        "y": 132.99999237060547,

+        "z": "eaff5db6.7dde1",

+        "wires": [

+            [

+                "dad83918.445348"

+            ]

+        ]

+    },

+    {

+        "id": "dad83918.445348",

+        "type": "method",

+        "name": "sdwan-vf-operation-wanport-create",

+        "xml": "<method rpc='sdwan-vf-operation-wanport-create' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 322.0104064941406,

+        "y": 232.99999237060547,

+        "z": "eaff5db6.7dde1",

+        "wires": [

+            [

+                "ffb1ada3.8a76c"

+            ]

+        ]

+    },

+    {

+        "id": "55cf0e90.e3564",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 179.51040267944336,

+        "y": 42,

+        "z": "eaff5db6.7dde1",

+        "wires": [

+            [

+                "bc28da2b.7303d8"

+            ]

+        ]

+    },

+    {

+        "id": "ffb1ada3.8a76c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 481.01039123535156,

+        "y": 349.0000009536743,

+        "z": "eaff5db6.7dde1",

+        "wires": [

+            [

+                "470949db.a87688",

+                "1946860c.52d49a",

+                "986d9d2e.d652e",

+                "176bae50.e7ba42",

+                "1c96aac1.62b6a5",

+                "d12731ca.f4e9a",

+                "ad8e03c8.3f99",

+                "99ca206c.689c4",

+                "45a27310.e17b0c",

+                "98b0c583.6fb0e8",

+                "f3463186.010ce",

+                "4efead29.a28254",

+                "187c318b.c5572e",

+                "29c03152.ef4a3e"

+            ]

+        ]

+    },

+    {

+        "id": "470949db.a87688",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 781.3398132324219,

+        "y": 240.49612522125244,

+        "z": "eaff5db6.7dde1",

+        "wires": [

+            [

+                "4bf0f7e7.44aea8"

+            ]

+        ]

+    },

+    {

+        "id": "4bf0f7e7.44aea8",

+        "type": "switchNode",

+        "name": "switch this vnf-id == input vnf-id",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\">    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1033.3399047851562,

+        "y": 239.16278839111328,

+        "z": "eaff5db6.7dde1",

+        "wires": [

+            [

+                "3d05a6f7.8cda9a"

+            ]

+        ]

+    },

+    {

+        "id": "d918203.c2e31e",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1405.0063934326172,

+        "y": 241.16279125213623,

+        "z": "eaff5db6.7dde1",

+        "wires": []

+    },

+    {

+        "id": "3d05a6f7.8cda9a",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1251.6732215881348,

+        "y": 241.16277027130127,

+        "z": "eaff5db6.7dde1",

+        "wires": [

+            [

+                "d918203.c2e31e"

+            ]

+        ]

+    },

+    {

+        "id": "176bae50.e7ba42",

+        "type": "for",

+        "name": "for loop idx - VF input parameters",

+        "xml": "<for index=\"idx\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 855.2605972290039,

+        "y": 462.66665840148926,

+        "z": "eaff5db6.7dde1",

+        "wires": [

+            [

+                "18c22866.3fa9a8"

+            ]

+        ]

+    },

+    {

+        "id": "18c22866.3fa9a8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1070.0389404296875,

+        "y": 460.2222423553467,

+        "z": "eaff5db6.7dde1",

+        "wires": [

+            [

+                "f7311df1.3a06f",

+                "eb8b9c09.06311"

+            ]

+        ]

+    },

+    {

+        "id": "f7311df1.3a06f",

+        "type": "execute",

+        "name": "execute split parameterName",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >\n<parameter name=\"original_string\" value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>\n<parameter name=\"regex\" value=\"_\"/>\n<parameter name=\"ctx_memory_result_key\" value=\"param-prefix\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1266.2951431274414,

+        "y": 437.97038078308105,

+        "z": "eaff5db6.7dde1",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "eb8b9c09.06311",

+        "type": "set",

+        "name": "set parameterName",

+        "xml": "<set>\n<parameter name=\"`vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`\" value='`$param-prefix[$param-prefix_length -1]`'/>\n",

+        "comments": "",

+        "x": 1235.7395706176758,

+        "y": 474.97049713134766,

+        "z": "eaff5db6.7dde1",

+        "wires": []

+    },

+    {

+        "id": "f77b19d7.8bb178",

+        "type": "comment",

+        "name": "Take the parameter names by removing prefix",

+        "info": "",

+        "comments": "",

+        "x": 1239.260799407959,

+        "y": 397.33332681655884,

+        "z": "eaff5db6.7dde1",

+        "wires": []

+    },

+    {

+        "id": "1946860c.52d49a",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 795.7604064941406,

+        "y": 195.9999942779541,

+        "z": "eaff5db6.7dde1",

+        "wires": [

+            [

+                "89c152d0.6fb2c"

+            ]

+        ]

+    },

+    {

+        "id": "89c152d0.6fb2c",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 982.4270858764648,

+        "y": 195.3332920074463,

+        "z": "eaff5db6.7dde1",

+        "wires": [

+            [

+                "869ba82c.b1cd68"

+            ]

+        ]

+    },

+    {

+        "id": "869ba82c.b1cd68",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n    <parameter name=\"error-message\" value=\"There are no VNFs in MD-SAL\" />\n",

+        "comments": "",

+        "x": 1164.0937118530273,

+        "y": 195.3332920074463,

+        "z": "eaff5db6.7dde1",

+        "wires": []

+    },

+    {

+        "id": "986d9d2e.d652e",

+        "type": "switchNode",

+        "name": "switch vf-modules.vf-module_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 837.0103960037231,

+        "y": 315.9999952316284,

+        "z": "eaff5db6.7dde1",

+        "wires": [

+            [

+                "6d96cae7.544aa4",

+                "7b4aef1d.e8397"

+            ]

+        ]

+    },

+    {

+        "id": "6d96cae7.544aa4",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1068.0104064941406,

+        "y": 291.99999237060547,

+        "z": "eaff5db6.7dde1",

+        "wires": [

+            [

+                "8b1de33b.f87d8"

+            ]

+        ]

+    },

+    {

+        "id": "7b4aef1d.e8397",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1068.0104064941406,

+        "y": 331.99999237060547,

+        "z": "eaff5db6.7dde1",

+        "wires": [

+            [

+                "e6620c2c.848df"

+            ]

+        ]

+    },

+    {

+        "id": "8b1de33b.f87d8",

+        "type": "set",

+        "name": "set vf-index",

+        "xml": "<set>\n<parameter name='vf-index' value='0' />\n",

+        "comments": "",

+        "x": 1210.5104064941406,

+        "y": 291.99999237060547,

+        "z": "eaff5db6.7dde1",

+        "wires": []

+    },

+    {

+        "id": "e6620c2c.848df",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1212.3674507141113,

+        "y": 331.9365043640137,

+        "z": "eaff5db6.7dde1",

+        "wires": [

+            [

+                "9a648de3.1f16d",

+                "8d5a09c0.be4698"

+            ]

+        ]

+    },

+    {

+        "id": "8d5a09c0.be4698",

+        "type": "set",

+        "name": "set vf-index",

+        "xml": "<set>\n<parameter name='vf-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n\n",

+        "comments": "",

+        "x": 1365.0659255981445,

+        "y": 301.5556030566804,

+        "z": "eaff5db6.7dde1",

+        "wires": []

+    },

+    {

+        "id": "9a648de3.1f16d",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-index`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1421.4944305419922,

+        "y": 354.7777328491211,

+        "z": "eaff5db6.7dde1",

+        "wires": [

+            [

+                "35f2967d.f1236a"

+            ]

+        ]

+    },

+    {

+        "id": "9105950c.e52f88",

+        "type": "comment",

+        "name": "make sure this network doesn't exist already",

+        "info": "",

+        "comments": "",

+        "x": 1645.1451606750488,

+        "y": 313.03179025650024,

+        "z": "eaff5db6.7dde1",

+        "wires": []

+    },

+    {

+        "id": "35f2967d.f1236a",

+        "type": "switchNode",

+        "name": "switch vf-module-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1696.7801513671875,

+        "y": 354.34923553466797,

+        "z": "eaff5db6.7dde1",

+        "wires": [

+            [

+                "7879d3b9.a48b9c"

+            ]

+        ]

+    },

+    {

+        "id": "7879d3b9.a48b9c",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1597.5103492736816,

+        "y": 412.9206666946411,

+        "z": "eaff5db6.7dde1",

+        "wires": [

+            [

+                "d7b29734.9c35b8"

+            ]

+        ]

+    },

+    {

+        "id": "d7b29734.9c35b8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id already found in service-data\" />\n",

+        "comments": "",

+        "x": 1745.2604522705078,

+        "y": 412.7778587634675,

+        "z": "eaff5db6.7dde1",

+        "wires": []

+    },

+    {

+        "id": "99ca206c.689c4",

+        "type": "set",

+        "name": "copy input data to service data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-id' value='`$prop.site-vf-index`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vnf-information.' value='`$vf-module-topology-operation-input.vnf-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />\n\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-topology.' value='`$tmp.vf-module-topology.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index+1`' />\n",

+        "comments": "",

+        "x": 849.8635559082031,

+        "y": 742.4961910247803,

+        "z": "eaff5db6.7dde1",

+        "wires": []

+    },

+    {

+        "id": "ad8e03c8.3f99",

+        "type": "execute",

+        "name": "execute generate-vf-module-index",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >\n<parameter name=\"ctx-destination\" value=\"prop.wan-port-vf-index\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 862.1971206665039,

+        "y": 688.1629104614258,

+        "z": "eaff5db6.7dde1",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d12731ca.f4e9a",

+        "type": "set",

+        "name": "set new vf-module_length",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index + 1`' />",

+        "comments": "",

+        "x": 834.1970672607422,

+        "y": 635.1628475189209,

+        "z": "eaff5db6.7dde1",

+        "wires": []

+    },

+    {

+        "id": "1c96aac1.62b6a5",

+        "type": "set",

+        "name": "set vf-module-request-input.",

+        "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />\n",

+        "comments": "",

+        "x": 846.1967353820801,

+        "y": 525.1542224884033,

+        "z": "eaff5db6.7dde1",

+        "wires": []

+    },

+    {

+        "id": "45a27310.e17b0c",

+        "type": "set",

+        "name": "set vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $prop.wan-port-vf-index\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",

+        "comments": "",

+        "x": 838.0104808807373,

+        "y": 794.0000371932983,

+        "z": "eaff5db6.7dde1",

+        "wires": []

+    },

+    {

+        "id": "98b0c583.6fb0e8",

+        "type": "set",

+        "name": "set vf-module-level-oper-status",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.order-status'  value='Created' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />",

+        "comments": "",

+        "x": 852.5105400085449,

+        "y": 843.9999303817749,

+        "z": "eaff5db6.7dde1",

+        "wires": []

+    },

+    {

+        "id": "187c318b.c5572e",

+        "type": "save",

+        "name": "save sdwan vpn resource in AAI",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='wan-port-config' \n      key='wan-port-config.wan-port-config-id = $prop.vnf-index' >\n<parameter name=\"wan-port-config-id\" value=\"`$prop.vnf-index`\" />\n<parameter name=\"wan-port-config-name\" value=\"`$prop.wan.name`\" />\n<parameter name=\"device-id\" value=\"`$prop.wan.deviceName`\" />\n<parameter name='vlan-id' value=\"`$prop.wan.vlanId`\" />\n<parameter name=\"ip-address\" value=\"`$prop.wan.ipAddress`\" />\n<parameter name=\"provider-ip-address\" value=\"`$prop.wan.providerIpAddress`\" />\n<parameter name=\"input-bandwidth\" value=\"`$prop.wan.inputBandwidth`\" />\n<parameter name=\"output-bandwidth\" value=\"`$prop.wan.outputBandwidth`\" />\n<parameter name=\"description\" value=\"`$prop.wan.description`\" />\n<parameter name=\"port-type\" value=\"`$prop.wan.portType`\" />\n<parameter name=\"port-number\" value=\"`$prop.wan.portNumber`\" />\n<parameter name=\"transport-network-name\" value=\"`$prop.wan.transportNetworkName`\" />\n<parameter name='operational-status' value='Created' />\n<parameter name='model-customization-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />\n<parameter name='selflink' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vf-module-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $service-data.vnfs.vnf[$vnf-index].vnf-id  + '/vnf-data/vf-modules/vf-module/' + $prop.site-vf-index + '/vf-module-data/'` \" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 856.0104484558105,

+        "y": 887.4999761581421,

+        "z": "eaff5db6.7dde1",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "29c03152.ef4a3e",

+        "type": "save",

+        "name": "save service relationship in AAI",

+        "xml": "<save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='generic-vnf:relationship-list' \n      key='generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"sdwan-vpn\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/sdwan-vpns/sdwan-vpn/' + $prop.site-vf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"sdwan-vpn.id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.site-vf-index`\" />\n\n\n<!--save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource:relationship-list' \n      key='site-resource.site-resource-id = $service-data.vnfs.vnf[$vnf-index].vnf-id' \n      force=\"true\" pfx=\"tmp.AnAI-data\">\n<parameter name=\"relationship-list.relationship[0].related-to\" value=\"sdwan-site\" />\n<parameter name=\"relationship-list.relationship[0].related-link\" value=\"`'/network/sdwan-sites/sdwan-site/' + $prop.site-vf-index`\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-key\" value=\"sdwan-vpn.id\" />\n<parameter name=\"relationship-list.relationship[0].relationship-data[0].relationship-value\" value=\"`$prop.site-vf-index`\" /-->\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 853.0103759765625,

+        "y": 933.5000076293945,

+        "z": "eaff5db6.7dde1",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f3463186.010ce",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 803.7329216003418,

+        "y": 980.6738667488098,

+        "z": "eaff5db6.7dde1",

+        "wires": []

+    },

+    {

+        "id": "4efead29.a28254",

+        "type": "call",

+        "name": "call sdwan-get-wan-param",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-wan-param' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 845.8992767333984,

+        "y": 587.8888759613037,

+        "z": "eaff5db6.7dde1",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-deactivate.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-deactivate.json
new file mode 100644
index 0000000..04265aa
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-deactivate.json
@@ -0,0 +1,834 @@
+[

+    {

+        "id": "e69423a5.584ae",

+        "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%/generic-resource-api-dg.properties' />\n    <parameter name='contextPrefix' value='prop' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 849.5312957763672,

+        "y": 366.07812881469727,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a2e25c17.8e9c",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 130,

+        "y": 54.0000057220459,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "3fa8aef8.7e3df2"

+            ]

+        ]

+    },

+    {

+        "id": "3fa8aef8.7e3df2",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 261.2856903076172,

+        "y": 103.23811435699463,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "2162b779.2eb3a8"

+            ]

+        ]

+    },

+    {

+        "id": "2162b779.2eb3a8",

+        "type": "method",

+        "name": "method sdwan-vf-operation-wanport-deactivate",

+        "xml": "<method rpc='sdwan-vf-operation-wanport-deactivate' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 264.4286193847656,

+        "y": 188.00003814697266,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "832591c7.4ef99"

+            ]

+        ]

+    },

+    {

+        "id": "7df3c0c6.f5b88",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 834.53125,

+        "y": 203.07812213897705,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "112ac69c.661419"

+            ]

+        ]

+    },

+    {

+        "id": "112ac69c.661419",

+        "type": "switchNode",

+        "name": "switch this vnf-id == input vnf-id",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\">    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1086.5313415527344,

+        "y": 201.7447853088379,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "9fb48502.518d68"

+            ]

+        ]

+    },

+    {

+        "id": "e66ecc6.7152f3",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1458.1978302001953,

+        "y": 203.74478816986084,

+        "z": "4fee9402.f5c9bc",

+        "wires": []

+    },

+    {

+        "id": "9fb48502.518d68",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1304.864658355713,

+        "y": 203.74476718902588,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "e66ecc6.7152f3"

+            ]

+        ]

+    },

+    {

+        "id": "ff28f3d.3169d1",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 848.9518432617188,

+        "y": 158.5819911956787,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "a6a2da6e.228e08"

+            ]

+        ]

+    },

+    {

+        "id": "a6a2da6e.228e08",

+        "type": "other",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1035.618522644043,

+        "y": 157.9152889251709,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "c0d198d3.426068"

+            ]

+        ]

+    },

+    {

+        "id": "c0d198d3.426068",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"404\" />\n    <parameter name=\"error-message\" value=\"There are no VNFs in MD-SAL\" />\n",

+        "comments": "",

+        "x": 1217.2851486206055,

+        "y": 157.9152889251709,

+        "z": "4fee9402.f5c9bc",

+        "wires": []

+    },

+    {

+        "id": "61f42e0f.accb4",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1487.5312576293945,

+        "y": 373.0781125728972,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "ce0facb9.acf8f"

+            ]

+        ]

+    },

+    {

+        "id": "d0cbbcf7.18e0c",

+        "type": "switchNode",

+        "name": "switch vf-module-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1906.8170928955078,

+        "y": 375.6496305465698,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "ada2f692.ece248"

+            ]

+        ]

+    },

+    {

+        "id": "bd278e04.68d68",

+        "type": "set",

+        "name": "set vf-module-length",

+        "xml": "<set>\n<parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n\n",

+        "comments": "",

+        "x": 1474.102882385254,

+        "y": 336.8559989929199,

+        "z": "4fee9402.f5c9bc",

+        "wires": []

+    },

+    {

+        "id": "4efb1646.df29b8",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1278.4042778015137,

+        "y": 350.2368840877898,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "61f42e0f.accb4",

+                "bd278e04.68d68",

+                "49047f5d.3dde6"

+            ]

+        ]

+    },

+    {

+        "id": "1c241e5.3b7e6e2",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1134.047233581543,

+        "y": 350.3003720943816,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "4efb1646.df29b8"

+            ]

+        ]

+    },

+    {

+        "id": "8e428583.69a8e8",

+        "type": "switchNode",

+        "name": "switch vf-modules.vf-module_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 898.047215461731,

+        "y": 277.3003845214844,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "1c241e5.3b7e6e2",

+                "45b16795.1e16b8",

+                "5c72c52f.a612dc"

+            ]

+        ]

+    },

+    {

+        "id": "45b16795.1e16b8",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1139.5312519073486,

+        "y": 249.0781135559082,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "b89d0343.04bd1"

+            ]

+        ]

+    },

+    {

+        "id": "5c72c52f.a612dc",

+        "type": "other",

+        "name": "Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1141.5624408721924,

+        "y": 286.10942459106445,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "b89d0343.04bd1"

+            ]

+        ]

+    },

+    {

+        "id": "b89d0343.04bd1",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vf-module-operation-input.vf-module-request-input.vf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 1299.3399562835693,

+        "y": 266.9983730316162,

+        "z": "4fee9402.f5c9bc",

+        "wires": []

+    },

+    {

+        "id": "ada2f692.ece248",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2110.53133392334,

+        "y": 374.0781369502656,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "8cb3d733.8b9cc8"

+            ]

+        ]

+    },

+    {

+        "id": "8cb3d733.8b9cc8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1872.8745422363281,

+        "y": 476.16428661346436,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "e9572390.a2ce1",

+                "7be5423c.87235c",

+                "39502de7.a9fc62"

+            ]

+        ]

+    },

+    {

+        "id": "e9572390.a2ce1",

+        "type": "set",

+        "name": "set tmp.vidx and ctx.vnf-data",

+        "xml": "<set>\n<parameter name='tmp.vidx' value='`$idx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />\n",

+        "comments": "",

+        "x": 2114.7612342834473,

+        "y": 446.50670051574707,

+        "z": "4fee9402.f5c9bc",

+        "wires": []

+    },

+    {

+        "id": "7be5423c.87235c",

+        "type": "set",

+        "name": "set vf-module-request-input.",

+        "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />\n\n",

+        "comments": "",

+        "x": 2118.207492828369,

+        "y": 491.1643395423889,

+        "z": "4fee9402.f5c9bc",

+        "wires": []

+    },

+    {

+        "id": "ce0facb9.acf8f",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1695.0313034057617,

+        "y": 373.07812118530273,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "d0cbbcf7.18e0c"

+            ]

+        ]

+    },

+    {

+        "id": "2948d13a.1b821e",

+        "type": "comment",

+        "name": "Get devices",

+        "info": "",

+        "comments": "",

+        "x": 848.0315361022949,

+        "y": 494.0781602859497,

+        "z": "4fee9402.f5c9bc",

+        "wires": []

+    },

+    {

+        "id": "49047f5d.3dde6",

+        "type": "set",

+        "name": "set prop.site.deviceId_length",

+        "xml": "<set>\n<parameter name='prop.site.deviceId_length' value='0' />\n",

+        "comments": "",

+        "x": 1500.53125,

+        "y": 301.07812213897705,

+        "z": "4fee9402.f5c9bc",

+        "wires": []

+    },

+    {

+        "id": "832591c7.4ef99",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 405.52733993530273,

+        "y": 405.0742197036743,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "ff28f3d.3169d1",

+                "7df3c0c6.f5b88",

+                "8e428583.69a8e8",

+                "e69423a5.584ae",

+                "ce0e4f49.1217b",

+                "16f0a729.f1f5a9",

+                "d2d93614.7c8ad8",

+                "2604b323.ea5f4c",

+                "9139c857.0718b8",

+                "c9d5923c.c3e6a",

+                "4a67f6d4.3597f8",

+                "7c127312.19825c",

+                "1954d3bb.e0ec6c"

+            ]

+        ]

+    },

+    {

+        "id": "39502de7.a9fc62",

+        "type": "call",

+        "name": "call sdwan-get-wan-param",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-wan-param' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2109.5039443969727,

+        "y": 538.0039381980896,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9139c857.0718b8",

+        "type": "get-resource",

+        "name": "get-resource esr-thirdparty-sdnc",

+        "xml": "<get-resource plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" \n\t\tresource=\"esr-thirdparty-sdnc\" \n\t\tkey=\"esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND \n\t\t     depth = '1'\"\n        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 893.2539443969727,

+        "y": 444.75391960144043,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "679a2fa0.7fa24",

+                "db810e5a.69a4a",

+                "b796d6f.b8abb28"

+            ]

+        ]

+    },

+    {

+        "id": "679a2fa0.7fa24",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1125.2540283203125,

+        "y": 408.753942489624,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "e1a99634.deb268"

+            ]

+        ]

+    },

+    {

+        "id": "db810e5a.69a4a",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1127.7449111938477,

+        "y": 444.3279790878296,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "363ab1e2.2b5cce"

+            ]

+        ]

+    },

+    {

+        "id": "b796d6f.b8abb28",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1123.0779190063477,

+        "y": 480.661337852478,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "cdf3743a.490b68"

+            ]

+        ]

+    },

+    {

+        "id": "cdf3743a.490b68",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",

+        "comments": "",

+        "x": 1276.8504104614258,

+        "y": 478.1004247665405,

+        "z": "4fee9402.f5c9bc",

+        "wires": []

+    },

+    {

+        "id": "363ab1e2.2b5cce",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`\" />\n\n",

+        "comments": "",

+        "x": 1273.316307067871,

+        "y": 442.6136665344238,

+        "z": "4fee9402.f5c9bc",

+        "wires": []

+    },

+    {

+        "id": "e1a99634.deb268",

+        "type": "set",

+        "name": "set controller data",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.thirdpartySdnc.url' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.user' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`\" />\n<parameter name='prop.sdncRestApi.thirdpartySdnc.password' value=\"`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`\" />\n",

+        "comments": "",

+        "x": 1280.7541427612305,

+        "y": 407.75383472442627,

+        "z": "4fee9402.f5c9bc",

+        "wires": []

+    },

+    {

+        "id": "c9d5923c.c3e6a",

+        "type": "execute",

+        "name": "execute RestApiCallNode Get token",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/actokentemplate.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"token-result\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 907.7640762329102,

+        "y": 532.4309215545654,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "80be9352.04481",

+                "fdeb2c27.d10b4"

+            ]

+        ]

+    },

+    {

+        "id": "80be9352.04481",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1142.76420211792,

+        "y": 518.4309101104736,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "303f14f3.7822fc"

+            ]

+        ]

+    },

+    {

+        "id": "303f14f3.7822fc",

+        "type": "set",

+        "name": "set token-id",

+        "xml": "<set>\n<parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\n",

+        "comments": "",

+        "x": 1284.7642097473145,

+        "y": 517.430911064148,

+        "z": "4fee9402.f5c9bc",

+        "wires": []

+    },

+    {

+        "id": "de3334dd.87a328",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing get token rest api\" />\n",

+        "comments": "",

+        "x": 1290.7642097473145,

+        "y": 554.823899269104,

+        "z": "4fee9402.f5c9bc",

+        "wires": []

+    },

+    {

+        "id": "fdeb2c27.d10b4",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1142.01420211792,

+        "y": 554.0738172531128,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "de3334dd.87a328"

+            ]

+        ]

+    },

+    {

+        "id": "4a67f6d4.3597f8",

+        "type": "call",

+        "name": "call sdwan-get-tenant-auth",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 884.7638244628906,

+        "y": 585.7639970779419,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "2604b323.ea5f4c",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 849.8993644714355,

+        "y": 1030.5663061141968,

+        "z": "4fee9402.f5c9bc",

+        "wires": []

+    },

+    {

+        "id": "4c7ada40.e6d834",

+        "type": "update",

+        "name": "update SDWAN wan port instance configuration in AAI",

+        "xml": "<update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='wan-port-config' \n      key='wan-port-config.wan-port-config-id = $vf-module-topology-operation-input.vnf-information.vnf-id' >\n<parameter name=\"wan-port-config-id\" value=\"`$vf-module-topology-operation-input.vnf-information.vnf-id`\" />\n<parameter name='operational-status' value='PendingDelete' />\n<parameter name='model-customization-id' value='`$vf-module-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />\n<parameter name='model-invariant-id' value='`$vf-module-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />\n<parameter name='model-version-id' value='`$vf-module-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 969.2184829711914,

+        "y": 990.3698863983154,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ce0e4f49.1217b",

+        "type": "set",

+        "name": "copy input data to service data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />\n",

+        "comments": "",

+        "x": 903.59619140625,

+        "y": 864.7630681991577,

+        "z": "4fee9402.f5c9bc",

+        "wires": []

+    },

+    {

+        "id": "16f0a729.f1f5a9",

+        "type": "set",

+        "name": "set vf-module-id and vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",

+        "comments": "",

+        "x": 937.8993911743164,

+        "y": 908.5661773681641,

+        "z": "4fee9402.f5c9bc",

+        "wires": []

+    },

+    {

+        "id": "d2d93614.7c8ad8",

+        "type": "set",

+        "name": "set vf-module-level-oper-status",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status'  value='PendingDelete' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />",

+        "comments": "",

+        "x": 904.8993911743164,

+        "y": 944.5661773681641,

+        "z": "4fee9402.f5c9bc",

+        "wires": []

+    },

+    {

+        "id": "1954d3bb.e0ec6c",

+        "type": "execute",

+        "name": "execute RestApiCallNode device port delete",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-device-port-del.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports/action/batch-delete'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"portResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 952.03125,

+        "y": 770.078145980835,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "5763133a.85c38c",

+                "e2a71559.3f3e88"

+            ]

+        ]

+    },

+    {

+        "id": "5763133a.85c38c",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1198.031234741211,

+        "y": 808.0782346725464,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "c730322d.384d7"

+            ]

+        ]

+    },

+    {

+        "id": "e2a71559.3f3e88",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1194.0313148498535,

+        "y": 762.0781497955322,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "33e8f10d.25726e"

+            ]

+        ]

+    },

+    {

+        "id": "33e8f10d.25726e",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create vpn rest api\" />\n",

+        "comments": "",

+        "x": 1335.031406402588,

+        "y": 762.0781507492065,

+        "z": "4fee9402.f5c9bc",

+        "wires": []

+    },

+    {

+        "id": "c730322d.384d7",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1342.0311012268066,

+        "y": 806.0781536102295,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7c127312.19825c",

+        "type": "execute",

+        "name": "execute RestApiCallNode wan port delete",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/sdwan-wan-port-del.json'`\" />\n<parameter name=\"restapiUrl\" value=\"`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/transport-network-ports/action/batch-delete'`\" />\n<parameter name=\"restapiUser\" value=\"`$prop.sdncRestApi.thirdpartySdnc.user`\" />\n<parameter name=\"restapiPassword\" value=\"`$prop.sdncRestApi.thirdpartySdnc.password`\" />\n<parameter name=\"format\" value=\"json\"/>\n<parameter name=\"httpMethod\" value=\"post\"/>\n<parameter name=\"responsePrefix\" value=\"portResp\"/>\n<parameter name=\"trustStoreFileName\" value=\"/opt/onap/sdnc/data/stores/truststore.onap.client.jks\"/>\n<parameter name=\"trustStorePassword\" value=\"adminadmin\"/>\n<parameter name=\"keyStoreFileName\" value=\"/opt/onap/sdnc/data/stores/sdnc.p12\"/>\n<parameter name=\"keyStorePassword\" value=\"adminadmin\"/>\n<parameter name='customHttpHeaders' value=\"`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`\" />",

+        "comments": "",

+        "outputs": 1,

+        "x": 947.0314178466797,

+        "y": 664.0781440734863,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "e0828ab7.60a978",

+                "3d0c4f43.fce4d"

+            ]

+        ]

+    },

+    {

+        "id": "e0828ab7.60a978",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1235.0315132141113,

+        "y": 696.0781135559082,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "aca8b9c6.d1fb58"

+            ]

+        ]

+    },

+    {

+        "id": "3d0c4f43.fce4d",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1239.031593322754,

+        "y": 632.0781917572021,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            [

+                "729b835e.b7b53c"

+            ]

+        ]

+    },

+    {

+        "id": "729b835e.b7b53c",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"Error executing Create vpn rest api\" />\n",

+        "comments": "",

+        "x": 1384.0317649841309,

+        "y": 634.0781917572021,

+        "z": "4fee9402.f5c9bc",

+        "wires": []

+    },

+    {

+        "id": "aca8b9c6.d1fb58",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 1391.0313568115234,

+        "y": 694.0781135559082,

+        "z": "4fee9402.f5c9bc",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-delete.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-delete.json
new file mode 100644
index 0000000..d290e8e
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-delete.json
@@ -0,0 +1,663 @@
+[

+    {

+        "id": "4c9b7636.16d1a8",

+        "type": "method",

+        "name": "method sdwan-vf-operation-wanport-delete",

+        "xml": "<method rpc='sdwan-vf-operation-wanport-delete' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 227.01040649414062,

+        "y": 192.58634161949158,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "ef9a78fa.b0f5b8"

+            ]

+        ]

+    },

+    {

+        "id": "ae863831.900868",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 215.29611206054688,

+        "y": 98.23810935020447,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "4c9b7636.16d1a8"

+            ]

+        ]

+    },

+    {

+        "id": "3c4c41bd.66b0ee",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 136.01040649414062,

+        "y": 35.99999976158142,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "ae863831.900868"

+            ]

+        ]

+    },

+    {

+        "id": "ef9a78fa.b0f5b8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 246.67710876464844,

+        "y": 459.66673517227173,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "73502c25.0501b4",

+                "8ef64cba.b142",

+                "e7c6e1f4.291c4",

+                "5b7d49e0.41f2f8",

+                "8b01c2d1.84cd3",

+                "27503470.8bf84c",

+                "dce00f39.1d9f7",

+                "9d21b2cd.86c73",

+                "827a72ac.9aabf",

+                "67cd24d6.a0f83c",

+                "a35824b0.8bb6e8"

+            ]

+        ]

+    },

+    {

+        "id": "8ef64cba.b142",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 559.0417709350586,

+        "y": 272.269140958786,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "11c14e91.a941a1"

+            ]

+        ]

+    },

+    {

+        "id": "73502c25.0501b4",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 564.010425567627,

+        "y": 211.0000102519989,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "45acbb70.cf9d84"

+            ]

+        ]

+    },

+    {

+        "id": "45acbb70.cf9d84",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 744.0104064941406,

+        "y": 209.99999976158142,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "1c305856.7d7878"

+            ]

+        ]

+    },

+    {

+        "id": "1c305856.7d7878",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 893.4391326904297,

+        "y": 211.14291739463806,

+        "z": "fa825249.678d7",

+        "wires": []

+    },

+    {

+        "id": "11c14e91.a941a1",

+        "type": "switchNode",

+        "name": "switch this vnf-id == input vnf-id",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\">    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 782.0104217529297,

+        "y": 273.0000059604645,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "4a09a290.a75bbc"

+            ]

+        ]

+    },

+    {

+        "id": "4a09a290.a75bbc",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 997.0104064941406,

+        "y": 270.9999997615814,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "57c73c18.c834a4"

+            ]

+        ]

+    },

+    {

+        "id": "57c73c18.c834a4",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1161.0104064941406,

+        "y": 265.9999997615814,

+        "z": "fa825249.678d7",

+        "wires": []

+    },

+    {

+        "id": "e7c6e1f4.291c4",

+        "type": "switchNode",

+        "name": "switch vf-modules.vf-module_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 630.010440826416,

+        "y": 349.00002455711365,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "8cdd0772.dbdbf8",

+                "d22fa0c4.8a1a8",

+                "b6f26649.6b92a8"

+            ]

+        ]

+    },

+    {

+        "id": "d22fa0c4.8a1a8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 852.0104331970215,

+        "y": 383.0000340938568,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "1ebe6a81.7b0665"

+            ]

+        ]

+    },

+    {

+        "id": "8cdd0772.dbdbf8",

+        "type": "outcome",

+        "name": "0",

+        "xml": "<outcome value='0'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 857.0104293823242,

+        "y": 330.0000331401825,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "1ebe6a81.7b0665"

+            ]

+        ]

+    },

+    {

+        "id": "1ebe6a81.7b0665",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 1015.0104331970215,

+        "y": 343.0000340938568,

+        "z": "fa825249.678d7",

+        "wires": []

+    },

+    {

+        "id": "b6f26649.6b92a8",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 852.0104331970215,

+        "y": 444.0000340938568,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "5d0462e8.482a9c"

+            ]

+        ]

+    },

+    {

+        "id": "98248461.3994b8",

+        "type": "set",

+        "name": "set vf-module_length",

+        "xml": "<set>\n<parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />\n\n",

+        "comments": "",

+        "x": 1206.0104484558105,

+        "y": 442.0000480413437,

+        "z": "fa825249.678d7",

+        "wires": []

+    },

+    {

+        "id": "5d0462e8.482a9c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1013.0104789733887,

+        "y": 441.00002551078796,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "98248461.3994b8",

+                "bb5716e5.5eb1d8"

+            ]

+        ]

+    },

+    {

+        "id": "bb5716e5.5eb1d8",

+        "type": "for",

+        "name": "for each existing vf-index",

+        "xml": "<for index='idx' start='0' end='`$vf-module-length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1225.0104179382324,

+        "y": 495.00002455711365,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "56d74cea.fe48b4"

+            ]

+        ]

+    },

+    {

+        "id": "56d74cea.fe48b4",

+        "type": "switchNode",

+        "name": "switch vf-module-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1468.0104331970215,

+        "y": 490.0000340938568,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "2f21e786.1474c8"

+            ]

+        ]

+    },

+    {

+        "id": "2f21e786.1474c8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1709.0105609893799,

+        "y": 483.00003123283386,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "935557d5.b42b38"

+            ]

+        ]

+    },

+    {

+        "id": "935557d5.b42b38",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1861.0105323791504,

+        "y": 485.00002455711365,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "b801dc09.3262a",

+                "fd33c1ac.d18c2",

+                "49806a1a.1b29c4"

+            ]

+        ]

+    },

+    {

+        "id": "b801dc09.3262a",

+        "type": "set",

+        "name": "set tmp.vidx and ctx.vnf-data",

+        "xml": "<set>\n<parameter name='tmp.vidx' value='`$idx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />\n",

+        "comments": "",

+        "x": 2083.0105323791504,

+        "y": 481.00002455711365,

+        "z": "fa825249.678d7",

+        "wires": []

+    },

+    {

+        "id": "fd33c1ac.d18c2",

+        "type": "set",

+        "name": "set vf-module-request-input.",

+        "xml": "<set>\n<parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />\n\n",

+        "comments": "",

+        "x": 2089.0105323791504,

+        "y": 530.0000245571136,

+        "z": "fa825249.678d7",

+        "wires": []

+    },

+    {

+        "id": "49806a1a.1b29c4",

+        "type": "call",

+        "name": "call sdwan-get-vf-module-device-param",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-device-param' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2117.010753631592,

+        "y": 578.0000302791595,

+        "z": "fa825249.678d7",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5b7d49e0.41f2f8",

+        "type": "switchNode",

+        "name": "switch tmp.vidx ",

+        "xml": "<switch test=\"`$tmp.vidx`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 569.0416526794434,

+        "y": 522.0161073207855,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "93788503.77e6c8"

+            ]

+        ]

+    },

+    {

+        "id": "93788503.77e6c8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 716.4702949523926,

+        "y": 521.5875174999237,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "70fed172.85f44"

+            ]

+        ]

+    },

+    {

+        "id": "70fed172.85f44",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 865.8990211486816,

+        "y": 522.7304351329803,

+        "z": "fa825249.678d7",

+        "wires": []

+    },

+    {

+        "id": "8b01c2d1.84cd3",

+        "type": "switchNode",

+        "name": "switch vf-module-oper-status",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 613.3398132324219,

+        "y": 592.3333127498627,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "223c17b4.64b778",

+                "e9d52081.e76dc"

+            ]

+        ]

+    },

+    {

+        "id": "223c17b4.64b778",

+        "type": "outcome",

+        "name": "outcome PendingDelete",

+        "xml": "<outcome value='PendingDelete'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 904.1730804443359,

+        "y": 596.4444358348846,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "814b2c34.1fd7f"

+            ]

+        ]

+    },

+    {

+        "id": "e9d52081.e76dc",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 871.1732177734375,

+        "y": 648.4444885253906,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "714ed175.ddb84"

+            ]

+        ]

+    },

+    {

+        "id": "714ed175.ddb84",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'VNF is not in appropriate state for activate. Current state is ' + $service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`\" />",

+        "comments": "",

+        "x": 1030.6729850769043,

+        "y": 651.4444875717163,

+        "z": "fa825249.678d7",

+        "wires": []

+    },

+    {

+        "id": "814b2c34.1fd7f",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1101.4794807434082,

+        "y": 606.769590139389,

+        "z": "fa825249.678d7",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "67cd24d6.a0f83c",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 562.031307220459,

+        "y": 966.0313129425049,

+        "z": "fa825249.678d7",

+        "wires": []

+    },

+    {

+        "id": "27503470.8bf84c",

+        "type": "for",

+        "name": "for lidx..service-data.vf-modules.vf-module[]",

+        "xml": "<for index='lidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 644.1178894042969,

+        "y": 712.1424579620361,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "666e6c4f.f97484"

+            ]

+        ]

+    },

+    {

+        "id": "dce00f39.1d9f7",

+        "type": "set",

+        "name": "set new vnf length",

+        "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length\" value='`$prop.vnfidxLen`'/>\n\n\t\n",

+        "comments": "",

+        "x": 568.2192611694336,

+        "y": 764.9466757774353,

+        "z": "fa825249.678d7",

+        "wires": []

+    },

+    {

+        "id": "9d21b2cd.86c73",

+        "type": "set",

+        "name": "Remove vnf from ServiceData",

+        "xml": "<set>\n\t<parameter name=\"service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].\" value=\"\"/>\n",

+        "comments": "",

+        "x": 605.1179351806641,

+        "y": 815.1424608230591,

+        "z": "fa825249.678d7",

+        "wires": []

+    },

+    {

+        "id": "666e6c4f.f97484",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 904.1178798675537,

+        "y": 719.1423177719116,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "46998b08.18a904"

+            ]

+        ]

+    },

+    {

+        "id": "a35824b0.8bb6e8",

+        "type": "delete",

+        "name": "delete wanport vf instance configuration in AAI",

+        "xml": "<delete plugin=\"org.onap.ccsdk.sli.adaptors.aai.AAIService\" resource='site-resource' \n        key='site-resource.site-resource-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 654.1183090209961,

+        "y": 906.4041156768799,

+        "z": "fa825249.678d7",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "46998b08.18a904",

+        "type": "switchNode",

+        "name": "switch vnf-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$lidx].vf-module-data.vf-module-information.vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1090.1179466247559,

+        "y": 719.1424784660339,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "52431b6f.b34934"

+            ]

+        ]

+    },

+    {

+        "id": "52431b6f.b34934",

+        "type": "outcomeFalse",

+        "name": "false",

+        "xml": "<outcome value='false'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1259.1179542541504,

+        "y": 718.142315864563,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "2b619a80.4a9f36"

+            ]

+        ]

+    },

+    {

+        "id": "2b619a80.4a9f36",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1413.117793083191,

+        "y": 710.1423168182373,

+        "z": "fa825249.678d7",

+        "wires": [

+            [

+                "466caa7f.55c334",

+                "921821fe.9836b"

+            ]

+        ]

+    },

+    {

+        "id": "466caa7f.55c334",

+        "type": "set",

+        "name": "set  vnf data",

+        "xml": "<set>\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-id`' />\n<parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-data.`' />\n",

+        "comments": "",

+        "x": 1578.1178884506226,

+        "y": 685.1424722671509,

+        "z": "fa825249.678d7",

+        "wires": []

+    },

+    {

+        "id": "921821fe.9836b",

+        "type": "set",

+        "name": "set prop.vnfNewidx",

+        "xml": "<set>\n<parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />\n",

+        "comments": "",

+        "x": 1600.1178884506226,

+        "y": 741.1424360275269,

+        "z": "fa825249.678d7",

+        "wires": []

+    },

+    {

+        "id": "827a72ac.9aabf",

+        "type": "set",

+        "name": "set vf-module-object-path",

+        "xml": "<set>\n<parameter name='vf-module-object-path' value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vf-modules/vf-module/'\n + $vf-module-topology-operation-input.vf-module-information.vf-module-id\n + '/vf-module-data/vf-module-topology/'`\"/>\n<parameter name='vnf-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/vnfs/vnf/'\n + $service-data.vnfs.vnf[$vnf-index].vnf-id\n + '/vnf-data/vnf-topology/'`\"/>\n<parameter name='service-object-path'\n value=\"`'restconf/config/GENERIC-RESOURCE-API:services/service/'\n + $vf-module-topology-operation-input.service-information.service-instance-id\n + '/service-data/service-topology/'`\"/>\n",

+        "comments": "",

+        "x": 591.9201431274414,

+        "y": 860.4757957458496,

+        "z": "fa825249.678d7",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_validate-sdwan-vf-vpn-input-parameters.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_validate-sdwan-vf-vpn-input-parameters.json
new file mode 100644
index 0000000..8a5d8f9
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_validate-sdwan-vf-vpn-input-parameters.json
@@ -0,0 +1,1305 @@
+[

+    {

+        "id": "3eca748a.ef817c",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 123,

+        "y": 75,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "350fb0d5.88723"

+            ]

+        ]

+    },

+    {

+        "id": "350fb0d5.88723",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 368.2857131958008,

+        "y": 74.23807907104492,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "7fecfee8.d291b"

+            ]

+        ]

+    },

+    {

+        "id": "7fecfee8.d291b",

+        "type": "method",

+        "name": "validate-sdwan-vf-vpn-input-parameters",

+        "xml": "<method rpc='validate-sdwan-vf-vpn-input-parameters' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 451.9166946411133,

+        "y": 209.25301837921143,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "8f6f1f8b.897a9"

+            ]

+        ]

+    },

+    {

+        "id": "8f6f1f8b.897a9",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 735.9167022705078,

+        "y": 197.25304317474365,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "634b7128.2e84d",

+                "adb8eda0.ca986",

+                "bc20a4d8.66ea78",

+                "376a189c.5eea28"

+            ]

+        ]

+    },

+    {

+        "id": "634b7128.2e84d",

+        "type": "switchNode",

+        "name": "switch  svc-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 995.916633605957,

+        "y": 45.25303936004639,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "183ac3e9.257bcc"

+            ]

+        ]

+    },

+    {

+        "id": "183ac3e9.257bcc",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1186.6309356689453,

+        "y": 46.2530403137207,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "65be383e.39b058"

+            ]

+        ]

+    },

+    {

+        "id": "65be383e.39b058",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"sdnc-request-header.svc-request-id is a required input\" />\n",

+        "comments": "",

+        "x": 1361.0594863891602,

+        "y": 45.25303268432617,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "adb8eda0.ca986",

+        "type": "switchNode",

+        "name": "switch svc-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 332.9166564941406,

+        "y": 468.2530336380005,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "83c4de98.01196",

+                "ce7e74f7.3c86c8",

+                "147fd5d9.68de3a",

+                "1561519f.abda0e",

+                "d7c5bf00.510dc"

+            ]

+        ]

+    },

+    {

+        "id": "83c4de98.01196",

+        "type": "outcome",

+        "name": "create",

+        "xml": "<outcome value='create'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 526.5000228881836,

+        "y": 297.66667079925537,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "363f7231.506cbe"

+            ]

+        ]

+    },

+    {

+        "id": "363f7231.506cbe",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 687.5000228881836,

+        "y": 297.66667079925537,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "46be34f.5b2c7cc"

+            ]

+        ]

+    },

+    {

+        "id": "ce7e74f7.3c86c8",

+        "type": "outcome",

+        "name": "deactivate",

+        "xml": "<outcome value='deactivate'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 499.4920120239258,

+        "y": 906.428539276123,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "aec7db3f.798358"

+            ]

+        ]

+    },

+    {

+        "id": "147fd5d9.68de3a",

+        "type": "outcome",

+        "name": "delete",

+        "xml": "<outcome value='delete'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 503.20639419555664,

+        "y": 1077.1430969238281,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "c7708172.24701"

+            ]

+        ]

+    },

+    {

+        "id": "1561519f.abda0e",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 502.9682846069336,

+        "y": 1250.571382522583,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "b6252f6e.c1321"

+            ]

+        ]

+    },

+    {

+        "id": "b6252f6e.c1321",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`$vf-module-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`\" />\n",

+        "comments": "",

+        "x": 686.5398178100586,

+        "y": 1251.190523147583,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "46be34f.5b2c7cc",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 888,

+        "y": 295.6666797399521,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "3528f63.34e230a",

+                "82048a2c.348118"

+            ]

+        ]

+    },

+    {

+        "id": "3528f63.34e230a",

+        "type": "other",

+        "name": "Other",

+        "xml": "<outcome value='Other'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1073.4999923706055,

+        "y": 323.66667652130127,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "3198409.3ebdec"

+            ]

+        ]

+    },

+    {

+        "id": "3198409.3ebdec",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"request-information.request-action is required to be SOTN CreateVPNNetworkInstance for svc-action=create\" />\n",

+        "comments": "",

+        "x": 1224.0000228881836,

+        "y": 317.66667079925537,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "ee1459dc.d090c8",

+        "type": "other",

+        "name": "DeleteSDWANVpnInstance",

+        "xml": "<outcome value='DeleteSDWANVpnInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 945.0634384155273,

+        "y": 1073.698395729065,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "773b0668.3dfda8"

+            ]

+        ]

+    },

+    {

+        "id": "640b4312.a9c5ac",

+        "type": "other",

+        "name": "Other",

+        "xml": "<outcome value='Other'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 860.6189804077148,

+        "y": 1149.920636177063,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "20eafb56.ca5e14"

+            ]

+        ]

+    },

+    {

+        "id": "20eafb56.ca5e14",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"request-information.request-action is required to be SOTN DeleteVPNNetworkInstance for svc-action=delete\" />\n",

+        "comments": "",

+        "x": 1020.9524002075195,

+        "y": 1152.0317735671997,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "773b0668.3dfda8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1168.9523086547852,

+        "y": 1079.9206190109253,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "30507c3b.465aa4",

+                "b4bebf6c.2b4fa",

+                "b3df3a7b.216bd8",

+                "eb92e3d.8a6ff2"

+            ]

+        ]

+    },

+    {

+        "id": "d7c5bf00.510dc",

+        "type": "outcome",

+        "name": "activate",

+        "xml": "<outcome value='activate'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 520.4285774230957,

+        "y": 560.7143135070801,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "aa89a015.4408d"

+            ]

+        ]

+    },

+    {

+        "id": "aa89a015.4408d",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 703.2857437133789,

+        "y": 557.8571634292603,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "c1f6d379.b3eef",

+                "89075fc5.672ae"

+            ]

+        ]

+    },

+    {

+        "id": "c1f6d379.b3eef",

+        "type": "other",

+        "name": "ActivateSDWANVpnInstance",

+        "xml": "<outcome value='ActivateSDWANVpnInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 956.5000228881836,

+        "y": 537.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "ce665d03.3901d"

+            ]

+        ]

+    },

+    {

+        "id": "89075fc5.672ae",

+        "type": "other",

+        "name": "Other",

+        "xml": "<outcome value='Other'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 886.5000228881836,

+        "y": 577.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "c6e2911c.5f916"

+            ]

+        ]

+    },

+    {

+        "id": "c6e2911c.5f916",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"request-information.request-action is required to be SOTN ActivateVPNNetworkInstance for svc-action=activate\" />\n",

+        "comments": "",

+        "x": 1044.0000228881836,

+        "y": 577.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "ce665d03.3901d",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1187.5000228881836,

+        "y": 537.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "b3df3a7b.216bd8",

+                "30507c3b.465aa4",

+                "b4bebf6c.2b4fa",

+                "57bd5824.2497c8"

+            ]

+        ]

+    },

+    {

+        "id": "c598159a.7423c8",

+        "type": "other",

+        "name": "DeactivateSDWANVpnInstance",

+        "xml": "<outcome value='DeactivateSDWANVpnInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 942.9206390380859,

+        "y": 908.1429328918457,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "50af0272.e02a9c"

+            ]

+        ]

+    },

+    {

+        "id": "e01173d7.fe6b9",

+        "type": "other",

+        "name": "Other",

+        "xml": "<outcome value='Other'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 857.9206314086914,

+        "y": 977.1429405212402,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "d14295e9.c68018"

+            ]

+        ]

+    },

+    {

+        "id": "d14295e9.c68018",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"request-information.request-action is required to be SOTN DeactivateVPNNetworkInstance for svc-action=deactivate\" />\n",

+        "comments": "",

+        "x": 1038.9206466674805,

+        "y": 978.1429405212402,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "aec7db3f.798358",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 679.7776947021484,

+        "y": 910.6188039779663,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "c598159a.7423c8",

+                "e01173d7.fe6b9"

+            ]

+        ]

+    },

+    {

+        "id": "c7708172.24701",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 683.5554962158203,

+        "y": 1076.9523208141327,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "ee1459dc.d090c8",

+                "640b4312.a9c5ac"

+            ]

+        ]

+    },

+    {

+        "id": "50af0272.e02a9c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1202.888786315918,

+        "y": 910.9523277282715,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "30507c3b.465aa4",

+                "b4bebf6c.2b4fa",

+                "b3df3a7b.216bd8",

+                "c2db488a.b105a8"

+            ]

+        ]

+    },

+    {

+        "id": "82048a2c.348118",

+        "type": "other",

+        "name": "CreateSDWANVpnInstance",

+        "xml": "<outcome value='CreateSDWANVpnInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1172.499984741211,

+        "y": 276.6666679382324,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "7a0b5551.c75d9c"

+            ]

+        ]

+    },

+    {

+        "id": "7a0b5551.c75d9c",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1407.49995803833,

+        "y": 275.6666679382324,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "3f52a78f.7ab728"

+            ]

+        ]

+    },

+    {

+        "id": "3f52a78f.7ab728",

+        "type": "for",

+        "name": "for loop i - vpn vf input parameters",

+        "xml": "<for index=\"i\" start=\"0\" end=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1638.000015258789,

+        "y": 276.6666679382324,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "d37b6b2c.71fb38"

+            ]

+        ]

+    },

+    {

+        "id": "d37b6b2c.71fb38",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1846.5000228881836,

+        "y": 277.66667079925537,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "9ec108e6.32a3b8",

+                "a16aa1da.005f3",

+                "3a20c40b.dcc4cc"

+            ]

+        ]

+    },

+    {

+        "id": "9ec108e6.32a3b8",

+        "type": "set",

+        "name": "clear tmp-data",

+        "xml": "<set>\n<parameter name='tmp.name' value='' />\n<parameter name='tmp.value' value='' />\n",

+        "comments": "",

+        "x": 2029.5000228881836,

+        "y": 237.66667079925537,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "a16aa1da.005f3",

+        "type": "set",

+        "name": "set tmp-data",

+        "xml": "<set>\n<parameter name='tmp.name' value=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].name`\"/>\n<parameter name='tmp.value' value=\"`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].value`\"/>\n",

+        "comments": "",

+        "x": 2024.0000228881836,

+        "y": 277.66667079925537,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "3a20c40b.dcc4cc",

+        "type": "switchNode",

+        "name": "switch name",

+        "xml": "<switch test=\"`$tmp.name`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2024.0000228881836,

+        "y": 317.66667079925537,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "3280408b.66ab3",

+                "63ad3611.30c718",

+                "2eab978e.1492a8"

+            ]

+        ]

+    },

+    {

+        "id": "d22ab892.eef718",

+        "type": "switchNode",

+        "name": "switch value",

+        "xml": "<switch test=\"`$tmp.value`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2484.0001907348633,

+        "y": 269.66669142246246,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "b07f67fa.6ab208"

+            ]

+        ]

+    },

+    {

+        "id": "2eab978e.1492a8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2243.500358581543,

+        "y": 335.66667902469635,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "5967794c.72e8b8"

+            ]

+        ]

+    },

+    {

+        "id": "5967794c.72e8b8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[' + $i + ']' + '.name is a required input'`\" />\n",

+        "comments": "",

+        "x": 2418.5003623962402,

+        "y": 334.66667902469635,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "3280408b.66ab3",

+        "type": "other",

+        "name": "name",

+        "xml": "<outcome value='name'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2243.500358581543,

+        "y": 219.66667330265045,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "d22ab892.eef718"

+            ]

+        ]

+    },

+    {

+        "id": "63ad3611.30c718",

+        "type": "other",

+        "name": "topology",

+        "xml": "<outcome value='topology'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2255.500114440918,

+        "y": 273.333335518837,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "d22ab892.eef718"

+            ]

+        ]

+    },

+    {

+        "id": "b07f67fa.6ab208",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 2627.5001907348633,

+        "y": 269.66669142246246,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "3ecabf5c.8d652"

+            ]

+        ]

+    },

+    {

+        "id": "3ecabf5c.8d652",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'vf-module-request-input.vf-module-input-parameters.param '+ $tmp.name +' is a required input'`\" />\n",

+        "comments": "",

+        "x": 2785.5001907348633,

+        "y": 269.66669142246246,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "b3df3a7b.216bd8",

+        "type": "switchNode",

+        "name": "switch service-data.vf-modules.vf-module_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1479.3889541625977,

+        "y": 576.9999761581421,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "37913775.d258a8",

+                "8c9e338f.0d83c"

+            ]

+        ]

+    },

+    {

+        "id": "37913775.d258a8",

+        "type": "other",

+        "name": "outcome Null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1748.0000228881836,

+        "y": 556.666711807251,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "7c4231f0.9cbb7"

+            ]

+        ]

+    },

+    {

+        "id": "7c4231f0.9cbb7",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 1924.0000228881836,

+        "y": 557.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "8c9e338f.0d83c",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1726.5000228881836,

+        "y": 597.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "b6f61e8c.9dd35"

+            ]

+        ]

+    },

+    {

+        "id": "b6f61e8c.9dd35",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1887.5000228881836,

+        "y": 597.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "9317c153.6ccad",

+                "bdedbaa4.65e588"

+            ]

+        ]

+    },

+    {

+        "id": "9317c153.6ccad",

+        "type": "for",

+        "name": "for nidx..service-data.vf-modules.vf-module[]",

+        "xml": "<for index='nidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2150.0000228881836,

+        "y": 577.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "1fade275.78b10e"

+            ]

+        ]

+    },

+    {

+        "id": "1fade275.78b10e",

+        "type": "switchNode",

+        "name": "switch vf-module-id found",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n    \n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2436.0000228881836,

+        "y": 577.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "99a1d82a.9dd8c8"

+            ]

+        ]

+    },

+    {

+        "id": "99a1d82a.9dd8c8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2606.5000228881836,

+        "y": 577.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "39ae6a67.1c8296"

+            ]

+        ]

+    },

+    {

+        "id": "70e3cfee.6e895",

+        "type": "set",

+        "name": "set tmp.nidx and ctx.network-data",

+        "xml": "<set>\n<parameter name='tmp.nidx' value='`$nidx`' />\n<parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-data.`' />\n",

+        "comments": "",

+        "x": 3007.50008392334,

+        "y": 574.6667140722275,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "1412cffb.8d463",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data\" />\n",

+        "comments": "",

+        "x": 2364.0000228881836,

+        "y": 617.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "fbeeeb3e.43c3b8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2226.5000228881836,

+        "y": 617.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "1412cffb.8d463"

+            ]

+        ]

+    },

+    {

+        "id": "bdedbaa4.65e588",

+        "type": "switchNode",

+        "name": "switch tmp.nidx ",

+        "xml": "<switch test=\"`$tmp.nidx`\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 2072.5000228881836,

+        "y": 617.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "fbeeeb3e.43c3b8"

+            ]

+        ]

+    },

+    {

+        "id": "57bd5824.2497c8",

+        "type": "switchNode",

+        "name": "switch network-level-oper-status",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1451.6667098999023,

+        "y": 656.5555486679077,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "719dd138.28ef4",

+                "2dca8a18.a65586"

+            ]

+        ]

+    },

+    {

+        "id": "719dd138.28ef4",

+        "type": "outcome",

+        "name": "outcome Created",

+        "xml": "<outcome value='Created'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1748.5001258850098,

+        "y": 656.5555467605591,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "94e9cf1a.6c399"

+            ]

+        ]

+    },

+    {

+        "id": "2dca8a18.a65586",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1716.5001258850098,

+        "y": 696.5555467605591,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "2c8432e2.7a0b8e"

+            ]

+        ]

+    },

+    {

+        "id": "2c8432e2.7a0b8e",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'vf-module is not in appropriate state for activate. Current state is ' + $service-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`\" />\n",

+        "comments": "",

+        "x": 1874.0001258850098,

+        "y": 696.5555467605591,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "b4bebf6c.2b4fa",

+        "type": "switchNode",

+        "name": "switch vf-module-id",

+        "xml": "<switch test=\"`$vf-module-topology-operation-input.vf-module-information.vf-module-id`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1398.5000228881836,

+        "y": 517.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "9ad9b806.2c19b8"

+            ]

+        ]

+    },

+    {

+        "id": "9ad9b806.2c19b8",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1626.5000228881836,

+        "y": 517.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "b7b28733.f37c08"

+            ]

+        ]

+    },

+    {

+        "id": "b7b28733.f37c08",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"network-request-input.network-input-parameters.name is a required input\" />\n",

+        "comments": "",

+        "x": 1764.0000228881836,

+        "y": 517.6666707992554,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "30507c3b.465aa4",

+        "type": "execute",

+        "name": "execute requiredParameters",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >\n<parameter name=\"vf-module-topology-operation-input.vf-module-information.vf-module-id\" value=\"$vf-module-topology-operation-input.vf-module-information.vf-module-id\"/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1433.0000228881836,

+        "y": 477.66667079925537,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c2db488a.b105a8",

+        "type": "switchNode",

+        "name": "switch network-level-oper-status",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1479.8332748413086,

+        "y": 906.5555257797241,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "cf4b307b.b1b04",

+                "acc49742.fd0df8"

+            ]

+        ]

+    },

+    {

+        "id": "cf4b307b.b1b04",

+        "type": "outcome",

+        "name": "outcome Active",

+        "xml": "<outcome value='Active'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1753.166648864746,

+        "y": 880.9999837875366,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "e31a54a2.3ff1f8"

+            ]

+        ]

+    },

+    {

+        "id": "acc49742.fd0df8",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1723.166648864746,

+        "y": 920.9999837875366,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "bc3125bf.c135a8"

+            ]

+        ]

+    },

+    {

+        "id": "bc3125bf.c135a8",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'vf-module is not in appropriate state for deactivate. Current state is ' + $service-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`\" />\n    ",

+        "comments": "",

+        "x": 1889.166648864746,

+        "y": 922.9999837875366,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "eb92e3d.8a6ff2",

+        "type": "switchNode",

+        "name": "switch network-level-oper-status",

+        "xml": "<switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1468.7221908569336,

+        "y": 1077.6666097640991,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "4005e1e5.db606",

+                "3f0b16e4.30f1ca"

+            ]

+        ]

+    },

+    {

+        "id": "4005e1e5.db606",

+        "type": "outcome",

+        "name": "outcome PendingDelete",

+        "xml": "<outcome value='PendingDelete'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1768.7222518920898,

+        "y": 1045.444405555725,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "e99f233c.ef676"

+            ]

+        ]

+    },

+    {

+        "id": "3f0b16e4.30f1ca",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1712.055564880371,

+        "y": 1092.1110677719116,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "26e244b4.b2362c"

+            ]

+        ]

+    },

+    {

+        "id": "26e244b4.b2362c",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`'vf-module is not in appropriate state for delete. Current state is ' + $service-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`\" />\n",

+        "comments": "",

+        "x": 1878.055564880371,

+        "y": 1094.1110677719116,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "94e9cf1a.6c399",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1940.5001029968262,

+        "y": 657.6666488647461,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e31a54a2.3ff1f8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1953.1665267944336,

+        "y": 879.1481161117554,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e99f233c.ef676",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 1984.277732849121,

+        "y": 1045.8147420883179,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "39ae6a67.1c8296",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 2756.666534423828,

+        "y": 574.0000190734863,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "70e3cfee.6e895"

+            ]

+        ]

+    },

+    {

+        "id": "bc20a4d8.66ea78",

+        "type": "switchNode",

+        "name": "switch vnf_length",

+        "xml": "<switch test='`$service-data.vnfs.vnf_length`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 971.0065307617188,

+        "y": 121.24849605560303,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "ae64d058.26533"

+            ]

+        ]

+    },

+    {

+        "id": "ae64d058.26533",

+        "type": "outcome",

+        "name": "NULL",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1151.0065116882324,

+        "y": 120.24848556518555,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "d4c5df8d.2e7e3"

+            ]

+        ]

+    },

+    {

+        "id": "d4c5df8d.2e7e3",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"vnf entry not found in service-data\" />\n",

+        "comments": "",

+        "x": 1300.4352378845215,

+        "y": 121.39140319824219,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    },

+    {

+        "id": "376a189c.5eea28",

+        "type": "for",

+        "name": "for each vnf",

+        "xml": "<for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 951.0379104614258,

+        "y": 183.51763439178467,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "891fced5.d7d06"

+            ]

+        ]

+    },

+    {

+        "id": "891fced5.d7d06",

+        "type": "switchNode",

+        "name": "switch this vnf-id == input vnf-id",

+        "xml": "<switch test=\"`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`\">    \n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1189.0065269470215,

+        "y": 183.2484917640686,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "2828372d.9354b8"

+            ]

+        ]

+    },

+    {

+        "id": "2828372d.9354b8",

+        "type": "outcomeTrue",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1404.0065116882324,

+        "y": 181.24848556518555,

+        "z": "619b2b0c.b0ac74",

+        "wires": [

+            [

+                "56c573f0.8eef8c"

+            ]

+        ]

+    },

+    {

+        "id": "56c573f0.8eef8c",

+        "type": "set",

+        "name": "set vnf-index",

+        "xml": "<set>\n<parameter name='vnf-index' value='`$idx`' />\n",

+        "comments": "",

+        "x": 1568.0065116882324,

+        "y": 176.24848556518555,

+        "z": "619b2b0c.b0ac74",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_vf-module-topology-operation.json b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_vf-module-topology-operation.json
new file mode 100644
index 0000000..b1cc364
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/json/sdwan/GENERIC-RESOURCE-API_vf-module-topology-operation.json
@@ -0,0 +1,1129 @@
+[

+    {

+        "id": "89e51e9a.af64e",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 107.00390625,

+        "y": 88.41365686058998,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "a0ef042f.2b7ad8"

+            ]

+        ]

+    },

+    {

+        "id": "a0ef042f.2b7ad8",

+        "type": "service-logic",

+        "name": "GENERIC-RESOURCE-API ${project.version}",

+        "module": "GENERIC-RESOURCE-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='GENERIC-RESOURCE-API' version='${project.version}'>",

+        "outputs": 1,

+        "x": 220.28961181640625,

+        "y": 128.65176835656166,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "a57a3919.3af3c8"

+            ]

+        ]

+    },

+    {

+        "id": "a57a3919.3af3c8",

+        "type": "method",

+        "name": "method vf-module-topology-operation",

+        "xml": "<method rpc='vf-module-topology-operation' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 194.43253326416016,

+        "y": 168.41365113854408,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "8614ae38.109ab"

+            ]

+        ]

+    },

+    {

+        "id": "38a58e7b.28bdc2",

+        "type": "comment",

+        "name": "vf-module-topology-operation",

+        "info": "",

+        "comments": "",

+        "x": 501.34876251220703,

+        "y": 36.00000062584877,

+        "z": "3e6c75a5.b69bda",

+        "wires": []

+    },

+    {

+        "id": "8614ae38.109ab",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 176.50394439697266,

+        "y": 407.7738291323185,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "53a601da.db57d",

+                "f371244d.9451a8",

+                "c9966ea2.57b1d"

+            ]

+        ]

+    },

+    {

+        "id": "53a601da.db57d",

+        "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=\"`$error-message`\" />\n",

+        "comments": "",

+        "x": 462.0039367675781,

+        "y": 581.2712179720402,

+        "z": "3e6c75a5.b69bda",

+        "wires": []

+    },

+    {

+        "id": "f371244d.9451a8",

+        "type": "switchNode",

+        "name": "switch svc-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 472.9085464477539,

+        "y": 405.98505368828773,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "dc31bef9.f164b",

+                "1b121869.8a1878",

+                "320a19eb.21afb6",

+                "db7b02d4.3e117",

+                "b369a934.e11c08",

+                "8734e4a2.e72ad8",

+                "bcf05aca.9cd8e8",

+                "c7064bfe.3bb108"

+            ]

+        ]

+    },

+    {

+        "id": "dc31bef9.f164b",

+        "type": "outcome",

+        "name": "assign",

+        "xml": "<outcome value='assign'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 682.3848266601562,

+        "y": 296.27089086174965,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "d462656f.1ce878"

+            ]

+        ]

+    },

+    {

+        "id": "1b121869.8a1878",

+        "type": "outcome",

+        "name": "unassign",

+        "xml": "<outcome value='unassign'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 690.765811920166,

+        "y": 442.46158280968666,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "52d55f39.2254f"

+            ]

+        ]

+    },

+    {

+        "id": "320a19eb.21afb6",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 643.4801177978516,

+        "y": 1599.985109001398,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "aa8c9f07.7e876"

+            ]

+        ]

+    },

+    {

+        "id": "aa8c9f07.7e876",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n\t<parameter name='ack-final' value='Y'/>\n\t<parameter name=\"error-code\" value=\"500\" />\n    <parameter name=\"error-message\" value=\"`$vnf-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`\" />\n",

+        "comments": "",

+        "x": 837.6705436706543,

+        "y": 1599.9851776659489,

+        "z": "3e6c75a5.b69bda",

+        "wires": []

+    },

+    {

+        "id": "c9966ea2.57b1d",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:validate-vf-module-input",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='validate-vf-module-input' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 592.0871887207031,

+        "y": 245.79471364617348,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "d462656f.1ce878",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vf-module-topology-operation-assign",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1054.527660369873,

+        "y": 295.84235540032387,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "1a8dc80f.d90c48",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vf-module-topology-operation-deactivate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-deactivate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1066.5276184082031,

+        "y": 392.50899854302406,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "52d55f39.2254f",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vf-module-topology-operation-unassign",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-unassign' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1060.8608894348145,

+        "y": 442.17571797966957,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e3a2c358.113df",

+        "type": "outcome",

+        "name": "deactivate",

+        "xml": "<outcome value='deactivate'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 694.8609046936035,

+        "y": 393.1756722033024,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "1a8dc80f.d90c48"

+            ]

+        ]

+    },

+    {

+        "id": "db7b02d4.3e117",

+        "type": "outcome",

+        "name": "changeassign",

+        "xml": "<outcome value='changeassign'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 705.3372268676758,

+        "y": 490.0803124010563,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "f258fd95.0fe79"

+            ]

+        ]

+    },

+    {

+        "id": "f258fd95.0fe79",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vf-module-topology-operation-changeassign",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-changeassign' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1074.4322967529297,

+        "y": 489.7944485247135,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b369a934.e11c08",

+        "type": "outcome",

+        "name": "create",

+        "xml": "<outcome value='create'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 691.00390625,

+        "y": 688.41365686059,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "ba7564f.359ed98"

+            ]

+        ]

+    },

+    {

+        "id": "2c4e26db.d2576a",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 929.3375091552734,

+        "y": 696.0000200271606,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "3d832a02.563396",

+                "1104c91d.350e07",

+                "f844d17c.4dd8f",

+                "48cd140e.14f35c",

+                "b370d981.a636e8"

+            ]

+        ]

+    },

+    {

+        "id": "1104c91d.350e07",

+        "type": "outcome",

+        "name": "CreateSiteInstance",

+        "xml": "<outcome value='CreateSiteInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1187.8138885498047,

+        "y": 642.4793663024902,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "20db622e.dd2f7e"

+            ]

+        ]

+    },

+    {

+        "id": "3d832a02.563396",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1129.7182922363281,

+        "y": 779.8572832643986,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "66bc9e9c.1ac1f"

+            ]

+        ]

+    },

+    {

+        "id": "ba7564f.359ed98",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 877.3374252319336,

+        "y": 616.0000216066837,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "2c4e26db.d2576a",

+                "b8d55366.a8f26"

+            ]

+        ]

+    },

+    {

+        "id": "20db622e.dd2f7e",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-site-create",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-site-create' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1644.3377113342285,

+        "y": 640.0001487731934,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "66bc9e9c.1ac1f",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1283.0039443969727,

+        "y": 779.9136797487736,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f844d17c.4dd8f",

+        "type": "outcome",

+        "name": "CreateSDWANPortInstance",

+        "xml": "<outcome value='CreateSDWANPortInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1193.6706848144531,

+        "y": 738.2471739351749,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "b6270252.07dee"

+            ]

+        ]

+    },

+    {

+        "id": "b6270252.07dee",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-wanport-create",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-wanport-create' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1666.1943817138672,

+        "y": 737.7679258882999,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "48cd140e.14f35c",

+        "type": "outcome",

+        "name": "CreateSDWANDeviceInstance",

+        "xml": "<outcome value='CreateSDWANDeviceInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1203.0350189208984,

+        "y": 695.4451179504395,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "3b11278c.bb8c38"

+            ]

+        ]

+    },

+    {

+        "id": "3b11278c.bb8c38",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-device-create",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-device-create' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1658.5588073730469,

+        "y": 694.9659872055054,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b370d981.a636e8",

+        "type": "outcome",

+        "name": "CreateSDWANVpnInstance",

+        "xml": "<outcome value='CreateSDWANVpnInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1233.0039367675781,

+        "y": 594.4136924743652,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "657379da.c01418"

+            ]

+        ]

+    },

+    {

+        "id": "657379da.c01418",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-vpn-create",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-vpn-create' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1641.5277099609375,

+        "y": 591.9344596862793,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "8734e4a2.e72ad8",

+        "type": "outcome",

+        "name": "activate",

+        "xml": "<outcome value='activate'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 681.00390625,

+        "y": 883.7469698488712,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "f1db3d76.89225"

+            ]

+        ]

+    },

+    {

+        "id": "cdd2825f.5d09c",

+        "type": "outcome",

+        "name": "ActivateSiteInstance",

+        "xml": "<outcome value='ActivateSiteInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1172.1469345092773,

+        "y": 883.6458899080753,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "2a41522d.67a51e"

+            ]

+        ]

+    },

+    {

+        "id": "f1db3d76.89225",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 861.6706771850586,

+        "y": 879.1666466295719,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "7f5f8826.961548"

+            ]

+        ]

+    },

+    {

+        "id": "2a41522d.67a51e",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-site-activate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-site-activate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1545.6707382202148,

+        "y": 882.1666723787785,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "e3a84270.80d99",

+        "type": "outcome",

+        "name": "ActivateSDWANDeviceInstance",

+        "xml": "<outcome value='ActivateSDWANDeviceInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1200.3373947143555,

+        "y": 932.6667119562626,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "5a26eb28.451874"

+            ]

+        ]

+    },

+    {

+        "id": "5a26eb28.451874",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-device-activate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-device-activate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1635.8610916137695,

+        "y": 932.1874844133854,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "a4f9d63b.494d98",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-wanport-activate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-wanport-activate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1640.3372268676758,

+        "y": 977.6666342318058,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c8acd26d.1e739",

+        "type": "outcome",

+        "name": "ActivateSDWANPortInstance",

+        "xml": "<outcome value='ActivateSDWANPortInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1204.8135299682617,

+        "y": 978.145861774683,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "a4f9d63b.494d98"

+            ]

+        ]

+    },

+    {

+        "id": "7f5f8826.961548",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 938.00390625,

+        "y": 945.7469698488712,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "cdd2825f.5d09c",

+                "e3a84270.80d99",

+                "c8acd26d.1e739",

+                "58bf71df.40217",

+                "e2c3c98a.638358"

+            ]

+        ]

+    },

+    {

+        "id": "58bf71df.40217",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1136.5753936767578,

+        "y": 1026.9584471285343,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "9491c86f.faa978"

+            ]

+        ]

+    },

+    {

+        "id": "e2c3c98a.638358",

+        "type": "outcome",

+        "name": "ActivateSDWANVpnInstance",

+        "xml": "<outcome value='ActivateSDWANVpnInstance'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1214.00390625,

+        "y": 841.7469698488712,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "3b1f1b03.8cdd84"

+            ]

+        ]

+    },

+    {

+        "id": "3b1f1b03.8cdd84",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-vpn-activate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-vpn-activate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1629.5277099609375,

+        "y": 835.2677465975285,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "bcf05aca.9cd8e8",

+        "type": "outcome",

+        "name": "deactivate",

+        "xml": "<outcome value='deactivate'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 671.00390625,

+        "y": 1129.7470308840275,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "eace7410.b0c1f8"

+            ]

+        ]

+    },

+    {

+        "id": "5e7397b3.dab7a8",

+        "type": "outcome",

+        "name": "DeactivateSiteInstance",

+        "xml": "<outcome value='DeactivateSiteInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1162.1469345092773,

+        "y": 1129.6459509432316,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "21bb9b2a.ea8a34"

+            ]

+        ]

+    },

+    {

+        "id": "eace7410.b0c1f8",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 851.6706771850586,

+        "y": 1125.1667076647282,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "c3ccf383.cfe88"

+            ]

+        ]

+    },

+    {

+        "id": "21bb9b2a.ea8a34",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-site-activate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-site-deactivate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1535.6707382202148,

+        "y": 1128.1667334139347,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "5379b130.c4fdc",

+        "type": "outcome",

+        "name": "DeactivateSDWANDeviceInstance",

+        "xml": "<outcome value='DeactivateSDWANDeviceInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1190.3373947143555,

+        "y": 1178.6667729914188,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "84ada7ed.5abb58"

+            ]

+        ]

+    },

+    {

+        "id": "84ada7ed.5abb58",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-device-deactivate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-device-deactivate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1625.8610916137695,

+        "y": 1178.1875454485416,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "45330326.89c95c",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-wanport-deactivate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-wanport-deactivate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1630.3372268676758,

+        "y": 1223.666695266962,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "47362b0e.0aa804",

+        "type": "outcome",

+        "name": "DeactivateSDWANPortInstance",

+        "xml": "<outcome value='DeactivateSDWANPortInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1194.8135299682617,

+        "y": 1224.1459228098392,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "45330326.89c95c"

+            ]

+        ]

+    },

+    {

+        "id": "c3ccf383.cfe88",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 928.00390625,

+        "y": 1191.7470308840275,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "5e7397b3.dab7a8",

+                "5379b130.c4fdc",

+                "47362b0e.0aa804",

+                "63e6c1ce.d4cf5",

+                "4a02ebd5.071034"

+            ]

+        ]

+    },

+    {

+        "id": "63e6c1ce.d4cf5",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1130.5752639770508,

+        "y": 1273.958485275507,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "58fb4bd3.507344"

+            ]

+        ]

+    },

+    {

+        "id": "4a02ebd5.071034",

+        "type": "outcome",

+        "name": "DeactivateSDWANVpnInstance",

+        "xml": "<outcome value='DeactivateSDWANVpnInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1204.00390625,

+        "y": 1087.7470308840275,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "fbad4fa4.97356"

+            ]

+        ]

+    },

+    {

+        "id": "fbad4fa4.97356",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-vpn-activate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-vpn-deactivate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1619.5277099609375,

+        "y": 1081.2678076326847,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "58fb4bd3.507344",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vf-module-topology-operation-deactivate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-deactivate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1469.0039443969727,

+        "y": 1274.413695961237,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9491c86f.faa978",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vf-module-topology-operation-activate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-activate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1467.00390625,

+        "y": 1024.41365686059,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "45dbdd14.1c9594",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:vf-module-topology-operation-activate",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-activate' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1059.00386428833,

+        "y": 343.41364446282387,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "7ddcd159.af7c5",

+        "type": "outcome",

+        "name": "activate",

+        "xml": "<outcome value='activate'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 687.003849029541,

+        "y": 344.08032193779945,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "45dbdd14.1c9594"

+            ]

+        ]

+    },

+    {

+        "id": "c7064bfe.3bb108",

+        "type": "outcome",

+        "name": "delete",

+        "xml": "<outcome value='delete'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 641.0038757324219,

+        "y": 1442.0803076326847,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "86fe3063.f5314"

+            ]

+        ]

+    },

+    {

+        "id": "8129346a.9a7028",

+        "type": "switchNode",

+        "name": "switch request-action",

+        "xml": "<switch test='`$vf-module-topology-operation-input.request-information.request-action`'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 880.3373947143555,

+        "y": 1442.666674286127,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "abdb2c6d.26329",

+                "1c9b503f.e869e",

+                "ebc11a5b.92e8f8",

+                "ed7bc3fc.a812b",

+                "f8972855.1982c8"

+            ]

+        ]

+    },

+    {

+        "id": "1c9b503f.e869e",

+        "type": "outcome",

+        "name": "DeleteSiteInstance",

+        "xml": "<outcome value='DeleteSiteInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1129.8138046264648,

+        "y": 1386.146000534296,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "491e32c9.2d52ac"

+            ]

+        ]

+    },

+    {

+        "id": "abdb2c6d.26329",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1079.71826171875,

+        "y": 1533.5239340364933,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "8f601e81.71977"

+            ]

+        ]

+    },

+    {

+        "id": "86fe3063.f5314",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic=\"true\">",

+        "atomic": "true",

+        "outputs": 1,

+        "x": 827.3373947143555,

+        "y": 1369.6666723787785,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "8129346a.9a7028"

+            ]

+        ]

+    },

+    {

+        "id": "491e32c9.2d52ac",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-site-delete",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-site-delete' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1583.3375778198242,

+        "y": 1381.666752487421,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "8f601e81.71977",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1233.0039138793945,

+        "y": 1533.5803305208683,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ebc11a5b.92e8f8",

+        "type": "outcome",

+        "name": "DeleteSDWANPortInstance",

+        "xml": "<outcome value='DeleteSDWANPortInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1143.670654296875,

+        "y": 1491.9138247072697,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "f8f01738.a952f8"

+            ]

+        ]

+    },

+    {

+        "id": "f8f01738.a952f8",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-wanport-delete",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-wanport-delete' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1616.194351196289,

+        "y": 1491.4345766603947,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "ed7bc3fc.a812b",

+        "type": "outcome",

+        "name": "DeleteSDWANDeviceInstance",

+        "xml": "<outcome value='DeleteSDWANDeviceInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1153.0349960327148,

+        "y": 1438.1117407381535,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "3f658e56.9d3b42"

+            ]

+        ]

+    },

+    {

+        "id": "3f658e56.9d3b42",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-device-delete",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-device-delete' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1617.5587615966797,

+        "y": 1437.6325737535954,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "f8972855.1982c8",

+        "type": "outcome",

+        "name": "DeleteSDWANVpnInstance",

+        "xml": "<outcome value='DeleteSDWANVpnInstance'>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1172.00390625,

+        "y": 1335.0803247988224,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            [

+                "19b04dbd.6b60a2"

+            ]

+        ]

+    },

+    {

+        "id": "19b04dbd.6b60a2",

+        "type": "call",

+        "name": "call GENERIC-RESOURCE-API:sdwan-vf-operation-vpn-delete",

+        "xml": "<call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-vpn-delete' mode='sync' >\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1579.5276794433594,

+        "y": 1336.6010767519474,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b8d55366.a8f26",

+        "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/svclogic.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"request-action\"/>\n<parameter name=\"field3\" value='`$vf-module-topology-operation-input.request-information.request-action`'/>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1018.75390625,

+        "y": 565.00390625,

+        "z": "3e6c75a5.b69bda",

+        "wires": [

+            []

+        ]

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/resources/graph.versions b/platform-logic/generic-resource-api/src/main/resources/graph.versions
index 83427b5..a049e64 100755
--- a/platform-logic/generic-resource-api/src/main/resources/graph.versions
+++ b/platform-logic/generic-resource-api/src/main/resources/graph.versions
@@ -109,6 +109,7 @@
 GENERIC-RESOURCE-API security-zone-topology-operation ${project.version} sync
 GENERIC-RESOURCE-API self-serve-aai-vf-module-put ${project.version} sync
 GENERIC-RESOURCE-API self-serve-aai-vnf-put ${project.version} sync
+GENERIC-RESOURCE-API self-serve-aai-pnf-put ${project.version} sync
 GENERIC-RESOURCE-API self-serve-capability-param-resolution ${project.version} sync
 GENERIC-RESOURCE-API self-serve-pnf-generate-name ${project.version} sync
 GENERIC-RESOURCE-API self-serve-vnf-generate-name ${project.version} sync
diff --git a/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-aai-pnf-put.xml b/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-aai-pnf-put.xml
new file mode 100644
index 0000000..6631d89
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/GENERIC-RESOURCE-API_self-serve-aai-pnf-put.xml
@@ -0,0 +1,156 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='self-serve-aai-pnf-put' mode='sync'>

+        <block atomic="true">

+            <switch test='`$ss.capability-name`'>

+                <outcome value=''>

+                    <return status="failure">

+                        <parameter name="ack-final" value="Y" />

+                        <parameter name="error-code" value="500"/>

+                        <parameter name="error-message" value="ss.capability-name is null" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$ss.capability-action`'>

+                <outcome value=''>

+                    <return status="failure">

+                        <parameter name="ack-final" value="Y" />

+                        <parameter name="error-code" value="500"/>

+                        <parameter name="error-message" value="ss.capability-action is null" />

+                    </return>

+                </outcome>

+                <outcome value='assign'>

+                    <block atomic='true'>

+                        <for silentFailure='true' index="aidx" start="0" end="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param_length`">

+                            <switch test='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].name`'>

+                                <outcome value='pnf-name'>

+                                    <set>

+                                        <parameter name='ss.param.pnf-name' value ='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />

+                                        <parameter name='ss.param.pnf-name-index' value='`$aidx`' />

+                                    </set>

+                                </outcome>

+                                <outcome value='pnf-name2'>

+                                    <set>

+                                        <parameter name='ss.param.pnf-name2' value ='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />

+                                        <parameter name='ss.param.pnf-name2-index' value='`$aidx`' />

+                                    </set>

+                                </outcome>

+                                <outcome value='pnf-id'>

+                                    <set>

+                                        <parameter name='ss.param.pnf-id' value ='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />

+                                        <parameter name='ss.param.pnf-id-index' value='`$aidx`' />

+                                    </set>

+                                </outcome>

+                                <outcome value='aai-pnf-put'>

+                                    <set>

+                                        <parameter name='ss.param.aai-pnf-put-index' value='`$aidx`' />

+                                    </set>

+                                </outcome>

+                                <outcome value='ipv4-oam-address'>

+                                    <set>

+                                        <parameter name='ss.param.ipv4-oam-address' value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />

+                                        <parameter name='ss.param.ipv4-oam-address-index' value='`$aidx`' />

+                                    </set>

+                                </outcome>

+                                <outcome value='ipv6-oam-address'>

+                                    <set>

+                                        <parameter name='ss.param.ipv6-oam-address' value='`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$aidx].value`' />

+                                        <parameter name='ss.param.ipv6-oam-address-index' value='`$aidx`' />

+                                    </set>

+                                </outcome>

+                            </switch>

+                        </for>

+                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="pnf"

+		key="pnf.pnf-name = $ss.param.pnf-name "

+	pfx="tmp.aai.pnf" >

+                            <outcome value='failure'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$ss.param.aai-pnf-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                    </set>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='500' />

+                                        <parameter name='error-message' value="`'Encountered error to get pnf with pnf-name=' + $ss.param.pnf-name + ' from AnAI'`" />

+                                    </return>

+                                </block>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$ss.param.aai-pnf-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                    </set>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='500' />

+                                        <parameter name='error-message' value="`'pnf with pnf-name=' + $ss.param.pnf-name + ' not found in AAI'`" />

+                                    </return>

+                                </block>

+                            </outcome>

+                        </get-resource>

+                        <set>

+                            <parameter name="ss.selflink" 

+	value="`'restconf/config/GENERIC-RESOURCE-API:services/service/' + 

+	$service-data.pnfs.pnf[$pnf-index].pnf-data.service-information.service-instance-id + 

+	'/service-data/pnfs/pnf/' + 

+	$ss.param.pnf-id + 

+	'/pnf-data/pnf-topology/'`" />

+                        </set>

+                        <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService"

+	resource="pnf"

+		key="pnf.pnf-name = $ss.param.pnf-name " >

+                            <parameter name="pnf-name2" value="`$ss.param.pnf-name2`" />

+                            <parameter name="prov-status" value="PREPROV" />

+                            <parameter name="selflink" value="`$ss.selflink`" />

+                            <parameter name="ipaddress-v4-oam" value="`$ss.param.ipv4-oam-address`" />

+                            <parameter name="ipaddress-v6-oam" value="`$ss.param.ipv6-oam-address`" />

+                            <parameter name="model-customization-id"

+        value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.onap-model-information.model-customization-uuid`" />

+                            <parameter name="model-invariant-id"

+        value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.onap-model-information.model-invariant-uuid`" />

+                            <parameter name="model-version-id"

+        value="`$service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-details.onap-model-information.model-uuid`" />

+                            <outcome value='failure'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$ss.param.aai-pnf-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                    </set>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='500' />

+                                        <parameter name='error-message' value="`'Failed to update pnf.pnf-name in AnAI with pnf-name=' + $ss.param.pnf-name`" />

+                                    </return>

+                                </block>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <block atomic='true'>

+                                    <set>

+                                        <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$ss.param.aai-pnf-put-index].resource-resolution-data.status' 

+	value='FAILED' />

+                                    </set>

+                                    <return status='failure'>

+                                        <parameter name='error-code' value='500' />

+                                        <parameter name='error-message' value="`'pnf with pnf-name =' + $ss.param.pnf-name + ' is not found in AAI'`" />

+                                    </return>

+                                </block>

+                            </outcome>

+                        </update>

+                        <set>

+                            <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$ss.param.aai-pnf-put-index].resource-resolution-data.status' 

+	value='SUCCESS' />

+                        </set>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='service-data.pnfs.pnf[$pnf-index].pnf-data.pnf-topology.pnf-parameters-data.param[$ss.param.aai-pnf-put-index].value' 

+	value='SUCCESS' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='printContext' >

+                <parameter name='filename' value='/var/tmp/ss-aai-pnf-put.log' />

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-tenant-auth.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-tenant-auth.xml
index 7fffebd..2fc01cf 100644
--- a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-tenant-auth.xml
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-tenant-auth.xml
@@ -5,8 +5,8 @@
         <block atomic="true">

             <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

 		resource="service-subscription" 

-        key= 'service-subscription.service-type = $service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.subscription-service-type 

-        AND customer.global-customer-id = $service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.global-customer-id'

+        key= 'service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.subscription-service-type 

+        AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.global-customer-id'

       force="true" pfx="tmp.AnAI-data-tenant">

                 <outcome value='success'>

                     <switch test='`$tmp.AnAI-data-tenant.temp-ub-sub-account-id`'>

@@ -48,4 +48,4 @@
             </execute>

         </block>

     </method>

-</service-logic>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-device-param.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-device-param.xml
new file mode 100644
index 0000000..ddafa01
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-device-param.xml
@@ -0,0 +1,87 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='sdwan-get-vf-module-device-param' mode='sync'>

+        <block atomic="true">

+            <for index="idx" start="0" end="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">

+                <block>

+                    <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.device.name' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'esn'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.device.esn' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'class'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.device.class' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'type'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.device.deviceModel' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'version'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.device.version' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'systemIp'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.device.systemIP' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'description'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.device.description' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'vendor'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.device.vendor' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'deviceId'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.device.deviceId' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'sdncCreate'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.device.sdncCreate' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <return status='success'>

+                        <parameter name="ack-final-indicator" value="Y" />

+                        <parameter name="error-code" value="200" />

+                        <parameter name="error-message" value="`$error-message`" />

+                    </return>

+                </block>

+            </for>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-lanport-param.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-lanport-param.xml
new file mode 100644
index 0000000..21f05ed
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-lanport-param.xml
@@ -0,0 +1,80 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='sdwan-get-vf-module-lanport-param' mode='sync'>

+        <block atomic="true">

+            <for index="idx" start="0" end="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">

+                <block>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'id'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.lan.id' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'deviceName'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.lan.deviceName' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'portSwitch'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.lan.portSwitch' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'portType'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.lan.portType' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'portNumber'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.lan.portNumber' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'ipAddress'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.lan.ipAddress' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'vlanId'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.lan.vlanId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'devicePortId'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.lan.devicePortId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'lanPortId'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.lan.lanPortId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <return status='success'>

+                        <parameter name="ack-final-indicator" value="Y" />

+                        <parameter name="error-code" value="200" />

+                        <parameter name="error-message" value="`$error-message`" />

+                    </return>

+                </block>

+            </for>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-site-param.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-site-param.xml
new file mode 100644
index 0000000..3317c6c
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-vf-module-site-param.xml
@@ -0,0 +1,147 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='sdwan-get-vf-module-site-param' mode='sync'>

+        <block atomic="true">

+            <for index="idx" start="0" end="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">

+                <block>

+                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">

+                        <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic2.log"/>

+                        <parameter name="field1" value="__TIMESTAMP__"/>

+                        <parameter name="field2" value="'vf-module-site-params'"/>

+                        <parameter name="field3" value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>

+                    </record>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.site.name' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'description'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.site.description' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.site.name' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'location-name'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.site.location-name' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'address'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.site.location-address' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'postcode'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.site.location-postcode' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'latitude'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.site.location-latitude' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'longitude'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.site.location-longitude' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'emails'`">

+                        <outcome value='true'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name='prop.site.emails' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                                </set>

+                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                                    <parameter name="original_string" value='`$prop.site.emails`'/>

+                                    <parameter name="regex" value=","/>

+                                    <parameter name="ctx_memory_result_key" value="prop.site.email"/>

+                                </execute>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'type'`">

+                        <outcome value='true'>

+                            <block>

+                                <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`">

+                                    <outcome value=''>

+                                        <block></block>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <set>

+                                            <parameter name='prop.site.type' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                                            <parameter name='prop.site.sdwan' value='true' />

+                                        </set>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'role'`">

+                        <outcome value='true'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name='prop.site.role' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                                </set>

+                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                                    <parameter name="original_string" value='`$prop.site.role`'/>

+                                    <parameter name="regex" value=","/>

+                                    <parameter name="ctx_memory_result_key" value="prop.site.roles"/>

+                                </execute>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'controlPoint'`">

+                        <outcome value='true'>

+                            <block>

+                                <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`">

+                                    <outcome value=''>

+                                        <block></block>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name='prop.site.controlPoint' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                                            </set>

+                                            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                                                <parameter name="original_string" value='`$prop.site.controlPoint`'/>

+                                                <parameter name="regex" value=","/>

+                                                <parameter name="ctx_memory_result_key" value="prop.site.controlpoints"/>

+                                            </execute>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <return status='success'>

+                        <parameter name="ack-final-indicator" value="Y" />

+                        <parameter name="error-code" value="200" />

+                        <parameter name="error-message" value="`$error-message`" />

+                    </return>

+                </block>

+            </for>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-wan-param.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-wan-param.xml
index 68980ec..e42b3bd 100644
--- a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-wan-param.xml
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-get-wan-param.xml
@@ -3,103 +3,124 @@
     xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>

     <method rpc='sdwan-get-wan-param' mode='sync'>

         <block atomic="true">

-            <for index='idx' start='0' end='`$vnf-request-input.vnf-input-parameters.param_length`' >

+            <for index="idx" start="0" end="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">

                 <block>

-                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'id'`">

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name  == 'id'`">

                         <outcome value='true'>

                             <set>

-                                <parameter name='prop.wan.id' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                                <parameter name='prop.wan.id' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

                             </set>

                         </outcome>

                     </switch>

-                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'name'`">

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`">

                         <outcome value='true'>

                             <set>

-                                <parameter name='prop.wan.name' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                                <parameter name='prop.wan.name' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

                             </set>

                         </outcome>

                     </switch>

-                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'description'`">

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name  == 'description'`">

                         <outcome value='true'>

                             <set>

-                                <parameter name='prop.wan.description' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                                <parameter name='prop.wan.description' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

                             </set>

                         </outcome>

                     </switch>

-                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'deviceName'`">

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'deviceName'`">

                         <outcome value='true'>

                             <set>

-                                <parameter name='prop.wan.deviceName' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                                <parameter name='prop.wan.deviceName' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

                             </set>

                         </outcome>

                     </switch>

-                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'portType'`">

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'portType'`">

                         <outcome value='true'>

                             <set>

-                                <parameter name='prop.wan.portType' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                                <parameter name='prop.wan.portType' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

                             </set>

                         </outcome>

                     </switch>

-                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'portNumber'`">

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'apn'`">

                         <outcome value='true'>

                             <set>

-                                <parameter name='prop.wan.portNumber' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                                <parameter name='prop.wan.apn-name' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

                             </set>

                         </outcome>

                     </switch>

-                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'ipAddress'`">

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'portNumber'`">

                         <outcome value='true'>

                             <set>

-                                <parameter name='prop.wan.ipAddress' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                                <parameter name='prop.wan.portNumber' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

                             </set>

                         </outcome>

                     </switch>

-                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'providerIpAddress'`">

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'ipAddress'`">

                         <outcome value='true'>

                             <set>

-                                <parameter name='prop.wan.providerIpAddress' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                                <parameter name='prop.wan.ipAddress' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

                             </set>

                         </outcome>

                     </switch>

-                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'vlanId'`">

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'providerIpAddress'`">

                         <outcome value='true'>

                             <set>

-                                <parameter name='prop.wan.vlanId' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                                <parameter name='prop.wan.providerIpAddress' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

                             </set>

                         </outcome>

                     </switch>

-                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'transportNetworkName'`">

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'vlanId'`">

                         <outcome value='true'>

                             <set>

-                                <parameter name='prop.wan.transportNetworkName' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                                <parameter name='prop.wan.vlanId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

                             </set>

                         </outcome>

                     </switch>

-                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'inputBandwidth'`">

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'transportNetworkName'`">

                         <outcome value='true'>

                             <set>

-                                <parameter name='prop.wan.inputBandwidth' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                                <parameter name='prop.wan.transportNetworkName' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

                             </set>

                         </outcome>

                     </switch>

-                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'outputBandwidth'`">

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'inputBandwidth'`">

                         <outcome value='true'>

                             <set>

-                                <parameter name='prop.wan.outputBandwidth' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                                <parameter name='prop.wan.inputBandwidth' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

                             </set>

                         </outcome>

                     </switch>

-                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'devicePortId'`">

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'outputBandwidth'`">

                         <outcome value='true'>

                             <set>

-                                <parameter name='prop.wan.devicePortId' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                                <parameter name='prop.wan.outputBandwidth' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

                             </set>

                         </outcome>

                     </switch>

-                    <switch test="`$vnf-request-input.vnf-input-parameters.param[$idx].name == 'wanPortId'`">

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'devicePortId'`">

                         <outcome value='true'>

                             <set>

-                                <parameter name='prop.wan.wanPortId' value='`$vnf-request-input.vnf-input-parameters.param[$idx].value`' />

+                                <parameter name='prop.wan.devicePortId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'wanPortId'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.wan.wanPortId' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'publicIP'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.wan.publicIP' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'IPMode'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.wan.IPMode' value='`$vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

                             </set>

                         </outcome>

                     </switch>

@@ -112,4 +133,4 @@
             </for>

         </block>

     </method>

-</service-logic>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-activate.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-activate.xml
new file mode 100644
index 0000000..3e57bbc
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-activate.xml
@@ -0,0 +1,316 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='sdwan-vf-operation-device-activate' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='vnf-index' value='`$idx`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                <outcome value='0'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">

+                            <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic1.log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="vf-module-id-input"/>

+                            <parameter name="field3" value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`'/>

+                        </record>

+                        <set>

+                            <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />

+                        </set>

+                        <for index='idx' start='0' end='`$vf-module-length`' >

+                            <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='tmp.vidx' value='`$idx`' />

+                                            <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-device-param' mode='sync' ></call>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test="`$tmp.vidx`">

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">

+                <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>

+                <parameter name="field1" value="__TIMESTAMP__"/>

+                <parameter name="field2" value="Provided alloted resource length"/>

+                <parameter name="field3" value="'parameters length'"/>

+                <parameter name="field4" value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`'/>

+            </record>

+            <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >

+                <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />

+                <parameter name='contextPrefix' value='prop' />

+            </execute>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="esr-thirdparty-sdnc" 

+		key="esr-thirdparty-sdnc.thirdparty-sdnc-id = 'SDWANController' AND 

+		     depth = '1'"

+        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >

+                <outcome value='success'>

+                    <set>

+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />

+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />

+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />

+                    </set>

+                </outcome>

+                <outcome value='not-found'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="post"/>

+                <parameter name="responsePrefix" value="token-result"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <outcome value='success'>

+                    <set>

+                        <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />

+                    </set>

+                </outcome>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error executing get token rest api" />

+                    </return>

+                </outcome>

+            </execute>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="service-subscription" 

+        key= 'service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.subscription-service-type 

+        AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.global-customer-id'

+      force="true" pfx="tmp.AnAI-data">

+                <outcome value='success'>

+                    <switch test='`$tmp.AnAI-data.temp-ub-sub-account-id`'>

+                        <outcome value=''>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name='prop.customer-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.global-customer-id`' />

+                                </set>

+                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >

+                                    <parameter name="source" value='`$prop.customer-id`'/>

+                                    <parameter name="outputPath" value="tmp.userAccountEmail"/>

+                                    <parameter name="target" value="@test.com"/>

+                                </execute>

+                                <set>

+                                    <parameter name='prop.userAccount' value='`$tmp.userAccountEmail`' />

+                                    <parameter name='prop.userEmail' value='`$tmp.userAccountEmail`' />

+                                </set>

+                                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                    <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-tenant.json'`" />

+                                    <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v2/baseservice/tenants'`" />

+                                    <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                                    <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                                    <parameter name="format" value="json"/>

+                                    <parameter name="httpMethod" value="post"/>

+                                    <parameter name="responsePrefix" value="tenant-result"/>

+                                    <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                                    <parameter name="trustStorePassword" value="adminadmin"/>

+                                    <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                                    <parameter name="keyStorePassword" value="adminadmin"/>

+                                    <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                                </execute>

+                                <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="service-subscription" 

+        key= 'service-subscription.service-type = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.subscription-service-type 

+        AND customer.global-customer-id = $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.global-customer-id'>

+                                    <parameter name='temp-ub-sub-account-id' value='`$tenant-result.data.tenantId`' />

+                                    <!--parameter name='temp-ub-sub-account-id' value='`$prop.customer-id`' /-->

+                                </update>

+                                <set>

+                                    <parameter name='prop.tenant-id' value='`$tenant-result.data.tenantId`' />

+                                </set>

+                                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                    <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />

+                                    <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v2/baseservice/tenants/authorization/' + $prop.tenant-id`" />

+                                    <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                                    <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                                    <parameter name="format" value="json"/>

+                                    <parameter name="httpMethod" value="put"/>

+                                    <parameter name="responsePrefix" value="tenant-result"/>

+                                    <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                                    <parameter name="trustStorePassword" value="adminadmin"/>

+                                    <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                                    <parameter name="keyStorePassword" value="adminadmin"/>

+                                    <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                                </execute>

+                            </block>

+                        </outcome>

+                        <outcome value='Other'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name='prop.tenant-id' value='`$tmp.AnAI-data.temp-ub-sub-account-id`' />

+                                </set>

+                                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                    <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />

+                                    <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v2/baseservice/tenants/authorization/' + $prop.tenant-id`" />

+                                    <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                                    <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                                    <parameter name="format" value="json"/>

+                                    <parameter name="httpMethod" value="put"/>

+                                    <parameter name="responsePrefix" value="tenant-result"/>

+                                    <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                                    <parameter name="trustStorePassword" value="adminadmin"/>

+                                    <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                                    <parameter name="keyStorePassword" value="adminadmin"/>

+                                    <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                                </execute>

+                            </block>

+                        </outcome>

+                    </switch>

+                </outcome>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error executing get token rest api" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <block atomic="true">

+                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                    <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-network-orchestration.json'`" />

+                    <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/network-orchestration-resources'`" />

+                    <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                    <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                    <parameter name="format" value="json"/>

+                    <parameter name="httpMethod" value="put"/>

+                    <parameter name="responsePrefix" value="orchestration-result"/>

+                    <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                    <parameter name="trustStorePassword" value="adminadmin"/>

+                    <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                    <parameter name="keyStorePassword" value="adminadmin"/>

+                    <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                </execute>

+            </block>

+            <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' ></call>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-device.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v3/devices'`" />

+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="post"/>

+                <parameter name="responsePrefix" value="deviceResp"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                <outcome value='success'>

+                    <block atomic="true"></block>

+                </outcome>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error executing Activate Device rest api" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value="deviceId" />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$deviceResp.success[0].id`' />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length + 1`' />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status'  value='Active' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />

+            </set>

+            <set>

+                <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vf-modules/vf-module/'

+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id

+ + '/vf-module-data/vf-module-topology/'`"/>

+                <parameter name='vnf-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vnf-topology/'`"/>

+                <parameter name='service-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />

+            </set>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="`$error-message`" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-create.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-create.xml
new file mode 100644
index 0000000..eed2f5f
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-create.xml
@@ -0,0 +1,113 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='sdwan-vf-operation-device-create' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="There are no VNFs in MD-SAL" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='vnf-index' value='`$idx`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='vf-index' value='0' />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <set>

+                            <parameter name='vf-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />

+                        </set>

+                        <for index='idx' start='0' end='`$vf-index`' >

+                            <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                                <outcome value='true'>

+                                    <return status='failure'>

+                                        <parameter name='ack-final' value='Y'/>

+                                        <parameter name="error-code" value="500" />

+                                        <parameter name="error-message" value="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id already found in service-data" />

+                                    </return>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <for index="idx" start="0" end="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">

+                <block>

+                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                        <parameter name="original_string" value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>

+                        <parameter name="regex" value="_"/>

+                        <parameter name="ctx_memory_result_key" value="param-prefix"/>

+                    </execute>

+                    <set>

+                        <parameter name="`vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`" value='`$param-prefix[$param-prefix_length -1]`'/>

+                    </set>

+                </block>

+            </for>

+            <set>

+                <parameter name='vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />

+            </set>

+            <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-device-param' mode='sync' ></call>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index + 1`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >

+                <parameter name="ctx-destination" value="prop.device-vf-index"/>

+            </execute>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-id' value='`$prop.device-vf-index`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vnf-information.' value='`$vf-module-topology-operation-input.vnf-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />

+                <!--parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-topology.' value='`$tmp.vf-module-topology.`' /-->

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index+1`' />

+            </set>

+            <set>

+                <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vf-modules/vf-module/'

+ + $prop.device-vf-index

+ + '/vf-module-data/vf-module-topology/'`"/>

+                <parameter name='vnf-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vnf-topology/'`"/>

+                <parameter name='service-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.order-status'  value='Created' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />

+            </set>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="`$error-message`" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-deactivate.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-deactivate.xml
new file mode 100644
index 0000000..5a1bc3d
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-deactivate.xml
@@ -0,0 +1,196 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='sdwan-vf-operation-device-deactivate' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='vnf-index' value='`$idx`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                <outcome value='0'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />

+                        </set>

+                        <for index='idx' start='0' end='`$vf-module-length`' >

+                            <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='tmp.vidx' value='`$idx`' />

+                                            <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-device-param' mode='sync' ></call>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test="`$tmp.vidx`">

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >

+                <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />

+                <parameter name='contextPrefix' value='prop' />

+            </execute>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="esr-thirdparty-sdnc" 

+		key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND 

+		     depth = '1'"

+        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >

+                <outcome value='success'>

+                    <set>

+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />

+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />

+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />

+                    </set>

+                </outcome>

+                <outcome value='not-found'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="post"/>

+                <parameter name="responsePrefix" value="token-result"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <outcome value='success'>

+                    <set>

+                        <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />

+                    </set>

+                </outcome>

+                <outcome value='failure'>

+                    <block></block>

+                </outcome>

+            </execute>

+            <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' ></call>

+            <set>

+                <parameter name='prop.devices_length' value='1' />

+            </set>

+            <set>

+                <parameter name='prop.devices[0]' value='`$prop.device.deviceId`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-device-del.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v3/devices'`" />

+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="delete"/>

+                <parameter name="responsePrefix" value="deviceResp"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                <outcome value='success'>

+                    <block atomic="true"></block>

+                </outcome>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error executing Create vpn rest api" />

+                    </return>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />

+            </set>

+            <set>

+                <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vf-modules/vf-module/'

+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id

+ + '/vf-module-data/vf-module-topology/'`"/>

+                <parameter name='vnf-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vnf-topology/'`"/>

+                <parameter name='service-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status'  value='PendingDelete' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />

+            </set>

+            <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' 

+      key='device.device-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >

+                <parameter name='device-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                <!--parameter name='device-id' value='`$deviceResp.success[0].id`' /-->

+                <parameter name='operational-status' value='PendingDelete' />

+            </update>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="`$error-message`" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-delete.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-delete.xml
new file mode 100644
index 0000000..995ecff
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-device-delete.xml
@@ -0,0 +1,142 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='sdwan-vf-operation-device-delete' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='vnf-index' value='`$idx`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                <outcome value='0'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />

+                        </set>

+                        <for index='idx' start='0' end='`$vf-module-length`' >

+                            <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='tmp.vidx' value='`$idx`' />

+                                            <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-device-param' mode='sync' ></call>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test="`$tmp.vidx`">

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status`'>

+                <outcome value='PendingDelete'>

+                    <block atomic="true"></block>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'VNF is not in appropriate state for activate. Current state is ' + $service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`" />

+                    </return>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='prop.vnfidxLen' value='`0`' />

+            </set>

+            <for index='lidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >

+                <block atomic="true">

+                    <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$lidx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                        <outcome value='false'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-id`' />

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-data.`' />

+                                </set>

+                                <set>

+                                    <parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />

+                                </set>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <set>

+                <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length" value='`$prop.vnfidxLen`'/>

+            </set>

+            <set>

+                <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen]." value=""/>

+            </set>

+            <set>

+                <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vf-modules/vf-module/'

+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id

+ + '/vf-module-data/vf-module-topology/'`"/>

+                <parameter name='vnf-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vnf-topology/'`"/>

+                <parameter name='service-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <switch test="`$prop.device.sdncCreate`">

+                <outcome value='true'>

+                    <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource='device' 

+        key='device.device-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id'></delete>

+                </outcome>

+            </switch>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="`$error-message`" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-activate.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-activate.xml
new file mode 100644
index 0000000..15f1e53
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-activate.xml
@@ -0,0 +1,425 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='sdwan-vf-operation-lanport-activate' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='vnf-index' value='`$idx`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                <outcome value='0'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />

+                        </set>

+                        <for index='idx' start='0' end='`$vf-module-length`' >

+                            <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='tmp.vidx' value='`$idx`' />

+                                            <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-lanport-param' mode='sync' ></call>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <for index='vnfidx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                <for index='vfidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length`' >

+                    <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >

+                        <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value == '$prop.lan.deviceName'`">

+                            <outcome value='true'>

+                                <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >

+                                    <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'deviceId'`">

+                                        <outcome value='true'>

+                                            <set>

+                                                <parameter name='prop.lan.deviceId' value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />

+                                            </set>

+                                        </outcome>

+                                    </switch>

+                                </for>

+                            </outcome>

+                        </switch>

+                    </for>

+                </for>

+            </for>

+            <set>

+                <parameter name='prop.siteAttachements_length' value='0' />

+                <parameter name='prop.siteIds_length' value='0' />

+            </set>

+            <for index='vnfidx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                <for index='vfidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length`' >

+                    <block>

+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">

+                            <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic24.log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="request-action"/>

+                            <parameter name="field3" value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action`'/>

+                        </record>

+                        <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action == 'ActivateSDWANSiteInstance'`">

+                            <outcome value='true'>

+                                <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >

+                                    <block atomic="true">

+                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">

+                                            <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic23.log"/>

+                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                            <parameter name="field2" value="param-name"/>

+                                            <parameter name="field3" value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name`'/>

+                                        </record>

+                                        <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'role'`">

+                                            <outcome value='true'>

+                                                <block atomic="true">

+                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">

+                                                        <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic22.log"/>

+                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                        <parameter name="field2" value="set spoke role"/>

+                                                    </record>

+                                                    <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value == 'sd-wan-edge'`">

+                                                        <outcome value='true'>

+                                                            <set>

+                                                                <parameter name='prop.role' value="spoke" />

+                                                            </set>

+                                                        </outcome>

+                                                    </switch>

+                                                    <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'dsvpn-hub'`">

+                                                        <outcome value='true'>

+                                                            <set>

+                                                                <parameter name='prop.role' value="hub" />

+                                                            </set>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                        <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'siteId'`">

+                                            <outcome value='true'>

+                                                <block atomic="true">

+                                                    <set>

+                                                        <parameter name='prop.attach.siteId' value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />

+                                                    </set>

+                                                    <set>

+                                                        <parameter name='prop.siteIds[$prop.siteIds_length]' value='`$prop.attach.siteId`' />

+                                                        <parameter name='prop.siteIds_length' value='`$prop.siteIds_length + 1`' />

+                                                    </set>

+                                                    <set>

+                                                        <parameter name='prop.siteAttachements[$prop.siteAttachements_length].siteId' value='`$prop.attach.siteId`' />

+                                                        <parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles[0]' value='`$prop.role`' />

+                                                        <parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles_length' value='1' />

+                                                        <parameter name='prop.siteAttachements_length' value='`$prop.siteAttachements_length + 1`' />

+                                                    </set>

+                                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">

+                                                        <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic21.log"/>

+                                                        <parameter name="field1" value="__TIMESTAMP__"/>

+                                                        <parameter name="field2" value="prop.attach.siteId"/>

+                                                        <parameter name="field3" value='`$prop.attach.siteId`'/>

+                                                    </record>

+                                                </block>

+                                            </outcome>

+                                        </switch>

+                                    </block>

+                                </for>

+                            </outcome>

+                        </switch>

+                        <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action == 'ActivateSDWANVpnInstance'`">

+                            <outcome value='true'>

+                                <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >

+                                    <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'vpn-id'`">

+                                        <outcome value='true'>

+                                            <set>

+                                                <parameter name='prop.vpn1Id' value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />

+                                            </set>

+                                        </outcome>

+                                    </switch>

+                                </for>

+                            </outcome>

+                        </switch>

+                    </block>

+                </for>

+            </for>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="esr-thirdparty-sdnc" 

+		key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND 

+		     depth = '1'"

+        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >

+                <outcome value='success'>

+                    <set>

+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />

+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />

+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />

+                    </set>

+                </outcome>

+                <outcome value='not-found'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="post"/>

+                <parameter name="responsePrefix" value="token-result"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <outcome value='success'>

+                    <set>

+                        <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />

+                    </set>

+                </outcome>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error executing get token rest api" />

+                    </return>

+                </outcome>

+            </execute>

+            <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' ></call>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdlan-port.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports'`" />

+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="post"/>

+                <parameter name="responsePrefix" value="portResp"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error executing Create device port rest api" />

+                    </return>

+                </outcome>

+                <outcome value='success'>

+                    <block atomic="true"></block>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='prop.lan.devicePortId' value='`$portResp.success[0].id`' />

+            </set>

+            <switch test="`$prop.lan.portSwitch == 'layer2-port'`">

+                <outcome value='true'>

+                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                        <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdlan-bridge-domain.json'`" />

+                        <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/bridge-domains'`" />

+                        <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                        <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                        <parameter name="format" value="json"/>

+                        <parameter name="httpMethod" value="post"/>

+                        <parameter name="responsePrefix" value="bridgeDomainResp"/>

+                        <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                        <parameter name="trustStorePassword" value="adminadmin"/>

+                        <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                        <parameter name="keyStorePassword" value="adminadmin"/>

+                        <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                        <outcome value='failure'>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="Error executing Create bridge domain rest api" />

+                            </return>

+                        </outcome>

+                        <outcome value='success'>

+                            <block atomic="true"></block>

+                        </outcome>

+                    </execute>

+                </outcome>

+            </switch>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                <parameter name="original_string" value='`$prop.lan.ipAddress`'/>

+                <parameter name="regex" value="/"/>

+                <parameter name="ctx_memory_result_key" value="ipandMask"/>

+                <outcome value='success'>

+                    <set>

+                        <parameter name='prop.lan.ip-address' value='`$ipandMask[0]`' />

+                        <parameter name='prop.lan.prefixLength' value='`$ipandMask[1]`' />

+                    </set>

+                </outcome>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='error-code' value='' />

+                        <parameter name='error-message' value="An error occured while splitting sna1_route" />

+                    </return>

+                </outcome>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdlan-ip-subnets.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/ip-subnets'`" />

+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="post"/>

+                <parameter name="responsePrefix" value="lanPortResp"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error executing Create device port rest api" />

+                    </return>

+                </outcome>

+                <outcome value='success'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='prop.lan.lanPortId' value='`lanPortResp.success[0].id`' />

+                        </set>

+                    </block>

+                </outcome>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-vpn.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/vpn'`" />

+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="put"/>

+                <parameter name="responsePrefix" value="vpn-result"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error executing Create vpn failed" />

+                    </return>

+                </outcome>

+                <outcome value='success'>

+                    <block atomic="true"></block>

+                </outcome>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-vpn-topology.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/' + $prop.vpn1Id + '/topology'`" />

+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="put"/>

+                <parameter name="responsePrefix" value="vpn-result"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error executing Create vpn topology failed" />

+                    </return>

+                </outcome>

+                <outcome value='success'>

+                    <block atomic="true"></block>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='devicePortId' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$prop.lan.devicePortId`' />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='lanPortId' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$prop.lan.lanPortId`' />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />

+            </set>

+            <set>

+                <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vf-modules/vf-module/'

+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id

+ + '/vf-module-data/vf-module-topology/'`"/>

+                <parameter name='vnf-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vnf-topology/'`"/>

+                <parameter name='service-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status'  value='Active' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />

+            </set>

+            <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='lan-port-config' 

+      key='sdwan-vpn.sdwan-vpn-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >

+                <parameter name='sdwan-vpn-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                <parameter name='operational-status' value='Active' />

+                <parameter name='lan-port-config-id' value='`$prop.lan-port-config-id`' />

+            </update>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="`$error-message`" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-create.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-create.xml
new file mode 100644
index 0000000..607a19f
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-create.xml
@@ -0,0 +1,136 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='sdwan-vf-operation-lanport-create' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="There are no VNFs in MD-SAL" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='vnf-index' value='`$idx`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='vf-index' value='0' />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <set>

+                            <parameter name='vf-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />

+                        </set>

+                        <for index='idx' start='0' end='`$vf-index`' >

+                            <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                                <outcome value='true'>

+                                    <return status='failure'>

+                                        <parameter name='ack-final' value='Y'/>

+                                        <parameter name="error-code" value="500" />

+                                        <parameter name="error-message" value="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id already found in service-data" />

+                                    </return>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <for index="idx" start="0" end="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">

+                <block>

+                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                        <parameter name="original_string" value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>

+                        <parameter name="regex" value="_"/>

+                        <parameter name="ctx_memory_result_key" value="param-prefix"/>

+                    </execute>

+                    <set>

+                        <parameter name="`vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`" value='`$param-prefix[$param-prefix_length -1]`'/>

+                    </set>

+                </block>

+            </for>

+            <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-lanport-param' mode='sync' ></call>

+            <set>

+                <parameter name='vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index + 1`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >

+                <parameter name="ctx-destination" value="prop.lan-vf-index"/>

+            </execute>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-id' value='`$prop.lan-vf-index`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vnf-information.' value='`$vf-module-topology-operation-input.vnf-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-topology.' value='`$tmp.vf-module-topology.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index+1`' />

+            </set>

+            <set>

+                <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vf-modules/vf-module/'

+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id

+ + '/vf-module-data/vf-module-topology/'`"/>

+                <parameter name='vnf-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vnf-topology/'`"/>

+                <parameter name='service-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.order-status'  value='Created' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />

+            </set>

+            <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='lan-port-config' 

+      key='lan-port-config.lan-port-config-id = $prop.lan-vf-index' >

+                <parameter name="lan-port-config-id" value="`$prop.vnf-index`" />

+                <parameter name="device-id" value="`$prop.lan.deviceName`" />

+                <parameter name="port-switch" value="`$prop.lan.portSwitch`" />

+                <parameter name="port-type" value="`$prop.lan.portType`" />

+                <parameter name="port-number" value="`$prop.lan.portnumber`" />

+                <parameter name="ipv4-address" value="`$prop.lan.ipAddress`" />

+                <parameter name='vlan-tag' value="`$prop.lan.vlanId`" />

+                <parameter name='operational-status' value='Created' />

+                <parameter name='model-customization-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />

+                <parameter name='model-invariant-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />

+                <parameter name='model-version-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />

+                <parameter name='selflink' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vf-module-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $service-data.vnfs.vnf[$vnf-index].vnf-id  + '/vnf-data/vf-modules/vf-module/' + $prop.site-vf-index + '/vf-module-data/'` " />

+            </save>

+            <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='generic-vnf:relationship-list' 

+      key='generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id' 

+      force="true" pfx="tmp.AnAI-data">

+                <parameter name="relationship-list.relationship[0].related-to" value="sdwan-vpn" />

+                <parameter name="relationship-list.relationship[0].related-link" value="`'/network/sdwan-vpns/sdwan-vpn/' + $prop.lan-vf-index`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="lan-port-config-id" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.lan-vf-index`" />

+            </save>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="`$error-message`" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-deactivate.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-deactivate.xml
new file mode 100644
index 0000000..77575c2
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-deactivate.xml
@@ -0,0 +1,413 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='sdwan-vf-operation-lanport-deactivate' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='vnf-index' value='`$idx`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                <outcome value='0'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />

+                        </set>

+                        <for index='idx' start='0' end='`$vf-module-length`' >

+                            <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='tmp.vidx' value='`$idx`' />

+                                            <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-lanport-param' mode='sync' ></call>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <for index='vnfidx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                <for index='vfidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length`' >

+                    <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >

+                        <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value == '$prop.lan.deviceName'`">

+                            <outcome value='true'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='prop.vnf-id' value='`$service-data.vnfs.vnf[$vnfidx].vnf-id`' />

+                                    </set>

+                                    <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >

+                                        <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'deviceId'`">

+                                            <outcome value='true'>

+                                                <set>

+                                                    <parameter name='prop.lan.deviceId' value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />

+                                                </set>

+                                            </outcome>

+                                        </switch>

+                                    </for>

+                                </block>

+                            </outcome>

+                        </switch>

+                    </for>

+                </for>

+            </for>

+            <set>

+                <parameter name='prop.siteAttachements_length' value='0' />

+                <parameter name='prop.siteIds_length' value='0' />

+            </set>

+            <for index='vnfidx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-id == $prop.vnf-id`">

+                    <outcome value='false'>

+                        <for index='vfidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module_length`' >

+                            <block>

+                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">

+                                    <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic24.log"/>

+                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                    <parameter name="field2" value="request-action"/>

+                                    <parameter name="field3" value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action`'/>

+                                </record>

+                                <!--switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action == 'ActivateSDWANSiteInstance'`"-->

+                                <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action == 'ActivateSiteInstance'`">

+                                    <outcome value='true'>

+                                        <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >

+                                            <block atomic="true">

+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">

+                                                    <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic23.log"/>

+                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                    <parameter name="field2" value="param-name"/>

+                                                    <parameter name="field3" value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name`'/>

+                                                </record>

+                                                <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'role'`">

+                                                    <outcome value='true'>

+                                                        <block atomic="true">

+                                                            <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value == 'sd-wan-edge'`">

+                                                                <outcome value='true'>

+                                                                    <set>

+                                                                        <parameter name='prop.role' value="spoke" />

+                                                                    </set>

+                                                                </outcome>

+                                                            </switch>

+                                                            <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'dsvpn-hub'`">

+                                                                <outcome value='true'>

+                                                                    <set>

+                                                                        <parameter name='prop.role' value="hub" />

+                                                                    </set>

+                                                                </outcome>

+                                                            </switch>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                                <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'siteId'`">

+                                                    <outcome value='true'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name='prop.attach.siteId' value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name='prop.siteIds[$prop.siteIds_length]' value='`$prop.attach.siteId`' />

+                                                                <parameter name='prop.siteIds_length' value='`$prop.siteIds_length + 1`' />

+                                                            </set>

+                                                            <set>

+                                                                <parameter name='prop.siteAttachements[$prop.siteAttachements_length].siteId' value='`$prop.attach.siteId`' />

+                                                                <parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles[0]' value='`$prop.role`' />

+                                                                <parameter name='prop.siteAttachements[$prop.siteAttachements_length].roles_length' value='1' />

+                                                                <parameter name='prop.siteAttachements_length' value='`$prop.siteAttachements_length + 1`' />

+                                                            </set>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                        </for>

+                                    </outcome>

+                                </switch>

+                                <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.request-information.request-action == 'ActivateSDWANVpnInstance'`">

+                                    <outcome value='true'>

+                                        <for index='pidx' start='0' end='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >

+                                            <switch test="`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].name == 'vpn-id'`">

+                                                <outcome value='true'>

+                                                    <set>

+                                                        <parameter name='prop.vpn1Id' value='`$service-data.vnfs.vnf[$vnfidx].vnf-data.vf-modules.vf-module[$vfidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$pidx].value`' />

+                                                    </set>

+                                                </outcome>

+                                            </switch>

+                                        </for>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </for>

+                    </outcome>

+                </switch>

+            </for>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="esr-thirdparty-sdnc" 

+		key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND 

+		     depth = '1'"

+        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >

+                <outcome value='success'>

+                    <set>

+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />

+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />

+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />

+                    </set>

+                </outcome>

+                <outcome value='not-found'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="post"/>

+                <parameter name="responsePrefix" value="token-result"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <outcome value='success'>

+                    <set>

+                        <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />

+                    </set>

+                </outcome>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error executing get token rest api" />

+                    </return>

+                </outcome>

+            </execute>

+            <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' ></call>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdlan-port-del.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports/action/batch-delete'`" />

+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="post"/>

+                <parameter name="responsePrefix" value="portResp"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error executing Create device port rest api" />

+                    </return>

+                </outcome>

+                <outcome value='success'>

+                    <block atomic="true"></block>

+                </outcome>

+            </execute>

+            <switch test="`$prop.lan.portSwitch == 'layer2-port'`">

+                <outcome value='true'>

+                    <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                        <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdlan-bridge-domain.json'`" />

+                        <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/bridge-domains'`" />

+                        <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                        <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                        <parameter name="format" value="json"/>

+                        <parameter name="httpMethod" value="post"/>

+                        <parameter name="responsePrefix" value="bridgeDomainResp"/>

+                        <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                        <parameter name="trustStorePassword" value="adminadmin"/>

+                        <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                        <parameter name="keyStorePassword" value="adminadmin"/>

+                        <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                        <outcome value='failure'>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="Error executing Create bridge domain rest api" />

+                            </return>

+                        </outcome>

+                        <outcome value='success'>

+                            <block atomic="true"></block>

+                        </outcome>

+                    </execute>

+                </outcome>

+            </switch>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                <parameter name="original_string" value='`$prop.lan.ipAddress`'/>

+                <parameter name="regex" value="/"/>

+                <parameter name="ctx_memory_result_key" value="ipandMask"/>

+                <outcome value='success'>

+                    <set>

+                        <parameter name='prop.lan.ip-address' value='`$ipandMask[0]`' />

+                        <parameter name='prop.lan.prefixLength' value='`$ipandMask[1]`' />

+                    </set>

+                </outcome>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='error-code' value='' />

+                        <parameter name='error-message' value="An error occured while splitting sna1_route" />

+                    </return>

+                </outcome>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdlan-ip-subnets-del.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/ip-subnets/action/batch-delete'`" />

+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="post"/>

+                <parameter name="responsePrefix" value="lanPortResp"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error executing Create device port rest api" />

+                    </return>

+                </outcome>

+                <outcome value='success'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='prop.lan.lanPortId' value='`lanPortResp.success[0].id`' />

+                        </set>

+                    </block>

+                </outcome>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-vpn.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/vpn'`" />

+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="put"/>

+                <parameter name="responsePrefix" value="vpn-result"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error executing Create vpn failed" />

+                    </return>

+                </outcome>

+                <outcome value='success'>

+                    <block atomic="true"></block>

+                </outcome>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-vpn-topology.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/' + $prop.vpn1Id + '/topology'`" />

+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="put"/>

+                <parameter name="responsePrefix" value="vpn-result"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error executing Create vpn topology failed" />

+                    </return>

+                </outcome>

+                <outcome value='success'>

+                    <block atomic="true"></block>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />

+            </set>

+            <set>

+                <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vf-modules/vf-module/'

+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id

+ + '/vf-module-data/vf-module-topology/'`"/>

+                <parameter name='vnf-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vnf-topology/'`"/>

+                <parameter name='service-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status'  value='PendingDelete' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />

+            </set>

+            <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='lan-port-config' 

+      key='sdwan-vpn.sdwan-vpn-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >

+                <parameter name='sdwan-vpn-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                <parameter name='operational-status' value='PendingDelete' />

+                <parameter name='lan-port-config-id' value='`$prop.lan-port-config-id`' />

+            </update>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="`$error-message`" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-delete.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-delete.xml
new file mode 100644
index 0000000..5fb6735
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-lanport-delete.xml
@@ -0,0 +1,138 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='sdwan-vf-operation-lanport-delete' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='vnf-index' value='`$idx`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                <outcome value='0'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />

+                        </set>

+                        <for index='idx' start='0' end='`$vf-module-length`' >

+                            <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='tmp.vidx' value='`$idx`' />

+                                            <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-lan-param' mode='sync' ></call>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test="`$tmp.vidx`">

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status`'>

+                <outcome value='PendingDelete'>

+                    <block atomic="true"></block>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'VNF is not in appropriate state for activate. Current state is ' + $service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`" />

+                    </return>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='prop.vnfidxLen' value='`0`' />

+            </set>

+            <for index='lidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >

+                <block atomic="true">

+                    <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$lidx].vf-module-data.vf-module-information.vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                        <outcome value='false'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-id`' />

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-data.`' />

+                                </set>

+                                <set>

+                                    <parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />

+                                </set>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <set>

+                <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length" value='`$prop.vnfidxLen`'/>

+            </set>

+            <set>

+                <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen]." value=""/>

+            </set>

+            <set>

+                <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vf-modules/vf-module/'

+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id

+ + '/vf-module-data/vf-module-topology/'`"/>

+                <parameter name='vnf-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vnf-topology/'`"/>

+                <parameter name='service-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource='lan-port-config' 

+        key='site-resource.site-resource-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id'></delete>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="`$error-message`" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-activate.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-activate.xml
new file mode 100644
index 0000000..8ac5971
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-activate.xml
@@ -0,0 +1,260 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='sdwan-vf-operation-site-activate' mode='sync'>

+        <block atomic="true">

+            <set>

+                <parameter name='prop.site.sdwan' value="false" />

+            </set>

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="There are no VNFs in MD-SAL" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='vnf-index' value='`$idx`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                <outcome value='0'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vf-module-operation-input.vf-module-request-input.vf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vf-module-operation-input.vf-module-request-input.vf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <set>

+                            <parameter name='prop.site.deviceId_length' value='0' />

+                        </set>

+                        <set>

+                            <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />

+                        </set>

+                        <for index='idx' start='0' end='`$vf-module-length`' >

+                            <block atomic="true">

+                                <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                                    <outcome value='true'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name='tmp.vidx' value='`$idx`' />

+                                                <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />

+                                            </set>

+                                            <set>

+                                                <parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />

+                                            </set>

+                                            <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-site-param' mode='sync' ></call>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                                <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`">

+                                    <outcome value='true'>

+                                        <block atomic="true">

+                                            <for index="deviceidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`">

+                                                <block>

+                                                    <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].name == 'deviceId'`">

+                                                        <outcome value='true'>

+                                                            <set>

+                                                                <parameter name='prop.site.deviceId[$prop.site.deviceId_length]' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].value`' />

+                                                                <parameter name='prop.site.deviceId_length' value='`$prop.site.deviceId_length + 1`' />

+                                                            </set>

+                                                        </outcome>

+                                                    </switch>

+                                                </block>

+                                            </for>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >

+                <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />

+                <parameter name='contextPrefix' value='prop' />

+            </execute>

+            <switch test="`$prop.site.sdwan`">

+                <outcome value='true'>

+                    <block atomic="true">

+                        <switch test="`$prop.site.controlPoint`">

+                            <outcome value=''>

+                                <block>

+                                    <set>

+                                        <parameter name='template.site.role' value="hub" />

+                                    </set>

+                                </block>

+                            </outcome>

+                            <outcome value='Other'>

+                                <block atomic="true">

+                                    <set>

+                                        <parameter name='template.site.role' value="spoke" />

+                                    </set>

+                                    <for index='cpidx' start='0' end='`$prop.site.controlpoints_length`' >

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name='prop.controlPtId' value='`$prop.site.controlpoints[$cpidx]`' />

+                                            </set>

+                                            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="site-resource" 

+		key="site-resource.site-resource-name = $prop.controlPtId AND 

+		     depth = '1'"

+        pfx='tmp.aai.controlPoints' local-only='false' >

+                                                <outcome value='success'>

+                                                    <set>

+                                                        <parameter name='prop.site.controlpoints[$cpidx]' value='`$tmp.aai.controlPoints.generated-site-id`' />

+                                                    </set>

+                                                </outcome>

+                                                <outcome value='failure'>

+                                                    <block></block>

+                                                </outcome>

+                                            </get-resource>

+                                        </block>

+                                    </for>

+                                </block>

+                            </outcome>

+                        </switch>

+                        <set>

+                            <parameter name='prop.site.siteId' value="" />

+                        </set>

+                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="esr-thirdparty-sdnc" 

+		key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND 

+		     depth = '1'"

+        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >

+                            <outcome value='success'>

+                                <set>

+                                    <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />

+                                    <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />

+                                    <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />

+                                </set>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />

+                                </return>

+                            </outcome>

+                            <outcome value='Other'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />

+                                </return>

+                            </outcome>

+                        </get-resource>

+                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                            <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />

+                            <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />

+                            <parameter name="format" value="json"/>

+                            <parameter name="httpMethod" value="post"/>

+                            <parameter name="responsePrefix" value="token-result"/>

+                            <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                            <parameter name="trustStorePassword" value="adminadmin"/>

+                            <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                            <parameter name="keyStorePassword" value="adminadmin"/>

+                            <outcome value='success'>

+                                <set>

+                                    <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />

+                                </set>

+                            </outcome>

+                            <outcome value='failure'>

+                                <block></block>

+                            </outcome>

+                        </execute>

+                        <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' ></call>

+                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                            <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-site-' + $template.site.role + '.json'`" />

+                            <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/sites'`" />

+                            <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                            <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                            <parameter name="format" value="json"/>

+                            <parameter name="httpMethod" value="post"/>

+                            <parameter name="responsePrefix" value="site-result"/>

+                            <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                            <parameter name="trustStorePassword" value="adminadmin"/>

+                            <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                            <parameter name="keyStorePassword" value="adminadmin"/>

+                            <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                            <outcome value='success'>

+                                <block atomic="true"></block>

+                            </outcome>

+                            <outcome value='failure'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="Error executing Create vpn rest api" />

+                                </return>

+                            </outcome>

+                        </execute>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='siteId' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$site-result.success[0].id`' />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length + 1`' />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />

+            </set>

+            <set>

+                <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vf-modules/vf-module/'

+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id

+ + '/vf-module-data/vf-module-topology/'`"/>

+                <parameter name='vnf-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vnf-topology/'`"/>

+                <parameter name='service-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status'  value='Active' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />

+            </set>

+            <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource' 

+      key='site-resource.site-resource-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >

+                <parameter name='site-resource-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                <parameter name='generated-site-id' value='`$site-result.success[0].id`' />

+                <parameter name='operational-status' value='Active' />

+            </update>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="`$error-message`" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-create.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-create.xml
new file mode 100644
index 0000000..d13f680
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-create.xml
@@ -0,0 +1,114 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='sdwan-vf-operation-site-create' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="There are no VNFs in MD-SAL" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='vnf-index' value='`$idx`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='vf-index' value='0' />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <set>

+                            <parameter name='vf-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />

+                        </set>

+                        <for index='idx' start='0' end='`$vf-index`' >

+                            <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                                <outcome value='true'>

+                                    <return status='failure'>

+                                        <parameter name='ack-final' value='Y'/>

+                                        <parameter name="error-code" value="500" />

+                                        <parameter name="error-message" value="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id already found in service-data" />

+                                    </return>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <for index="idx" start="0" end="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">

+                <block>

+                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                        <parameter name="original_string" value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>

+                        <parameter name="regex" value="_"/>

+                        <parameter name="ctx_memory_result_key" value="param-prefix"/>

+                    </execute>

+                    <set>

+                        <parameter name="`vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`" value='`$param-prefix[$param-prefix_length -1]`'/>

+                    </set>

+                </block>

+            </for>

+            <set>

+                <parameter name='vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />

+            </set>

+            <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-site-param' mode='sync' ></call>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index + 1`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >

+                <parameter name="ctx-destination" value="prop.site-vf-index"/>

+            </execute>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-id' value='`$prop.site-vf-index`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vnf-information.' value='`$vf-module-topology-operation-input.vnf-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-topology.' value='`$tmp.vf-module-topology.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index+1`' />

+            </set>

+            <set>

+                <parameter name='vf-module-id' value='`$prop.site-vf-index`' />

+                <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vf-modules/vf-module/'

+ + $prop.site-vf-index

+ + '/vf-module-data/vf-module-topology/'`"/>

+                <parameter name='vnf-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vnf-topology/'`"/>

+                <parameter name='service-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.order-status'  value='Created' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />

+            </set>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="`$error-message`" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-deactivate.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-deactivate.xml
new file mode 100644
index 0000000..1fcddf6
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-deactivate.xml
@@ -0,0 +1,222 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='sdwan-vf-operation-site-deactivate' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='vnf-index' value='`$idx`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                <outcome value='0'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />

+                        </set>

+                        <for index='idx' start='0' end='`$vf-module-length`' >

+                            <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='tmp.vidx' value='`$idx`' />

+                                            <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-site-param' mode='sync' ></call>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test="`$tmp.vidx`">

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">

+                <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>

+                <parameter name="field1" value="__TIMESTAMP__"/>

+                <parameter name="field2" value="Provided alloted resource length"/>

+                <parameter name="field3" value="'parameters length'"/>

+                <parameter name="field4" value='`$vnf-topology-operation-input.vnf-request-input.vnf-input-parameters.param_length`'/>

+            </record>

+            <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >

+                <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />

+                <parameter name='contextPrefix' value='prop' />

+            </execute>

+            <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`'>

+                <block>

+                    <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'type'`">

+                        <outcome value='true'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name='prop.site.type' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                                    <parameter name='prop.site.sdwan' value="true" />

+                                </set>

+                            </block>

+                        </outcome>

+                    </switch>

+                    <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'siteId'`">

+                        <outcome value='true'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name='prop.site.siteId' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                                </set>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <switch test="`$prop.site.sdwan`">

+                <outcome value='true'>

+                    <block atomic="true">

+                        <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="esr-thirdparty-sdnc" 

+		key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND 

+		     depth = '1'"

+        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >

+                            <outcome value='success'>

+                                <set>

+                                    <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />

+                                    <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />

+                                    <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />

+                                </set>

+                            </outcome>

+                            <outcome value='not-found'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />

+                                </return>

+                            </outcome>

+                            <outcome value='Other'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />

+                                </return>

+                            </outcome>

+                        </get-resource>

+                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                            <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />

+                            <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />

+                            <parameter name="format" value="json"/>

+                            <parameter name="httpMethod" value="post"/>

+                            <parameter name="responsePrefix" value="token-result"/>

+                            <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                            <parameter name="trustStorePassword" value="adminadmin"/>

+                            <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                            <parameter name="keyStorePassword" value="adminadmin"/>

+                            <outcome value='success'>

+                                <set>

+                                    <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />

+                                </set>

+                            </outcome>

+                            <outcome value='failure'>

+                                <block></block>

+                            </outcome>

+                        </execute>

+                        <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' ></call>

+                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                            <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-site-del.json'`" />

+                            <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/sites/action/batch-delete'`" />

+                            <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                            <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                            <parameter name="format" value="json"/>

+                            <parameter name="httpMethod" value="post"/>

+                            <parameter name="responsePrefix" value="site-result"/>

+                            <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                            <parameter name="trustStorePassword" value="adminadmin"/>

+                            <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                            <parameter name="keyStorePassword" value="adminadmin"/>

+                            <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                            <outcome value='failure'>

+                                <block atomic="true"></block>

+                            </outcome>

+                            <outcome value='Other'>

+                                <block atomic="true"></block>

+                            </outcome>

+                        </execute>

+                    </block>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />

+            </set>

+            <set>

+                <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vf-modules/vf-module/'

+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id

+ + '/vf-module-data/vf-module-topology/'`"/>

+                <parameter name='vnf-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vnf-topology/'`"/>

+                <parameter name='service-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status'  value='PendingDelete' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />

+            </set>

+            <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='device' 

+      key='device.device-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >

+                <parameter name='device-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                <!--parameter name='device-id' value='`$deviceResp.success[0].id`' /-->

+                <parameter name='operational-status' value='PendingDelete' />

+            </update>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="`$error-message`" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-delete.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-delete.xml
new file mode 100644
index 0000000..0c728d4
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-site-delete.xml
@@ -0,0 +1,136 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='sdwan-vf-operation-site-delete' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='vnf-index' value='`$idx`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                <outcome value='0'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />

+                        </set>

+                        <for index='idx' start='0' end='`$vf-module-length`' >

+                            <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='tmp.vidx' value='`$idx`' />

+                                            <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-device-param' mode='sync' ></call>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test="`$tmp.vidx`">

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status`'>

+                <outcome value='PendingDelete'>

+                    <block atomic="true"></block>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'VNF is not in appropriate state for activate. Current state is ' + $service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`" />

+                    </return>

+                </outcome>

+            </switch>

+            <set>

+                <parameter name='prop.vnfidxLen' value='`0`' />

+            </set>

+            <for index='lidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >

+                <block atomic="true">

+                    <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$lidx].vf-module-data.vf-module-information.vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                        <outcome value='false'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-id`' />

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-data.`' />

+                                </set>

+                                <set>

+                                    <parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />

+                                </set>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <set>

+                <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length" value='`$prop.vnfidxLen`'/>

+            </set>

+            <set>

+                <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen]." value=""/>

+            </set>

+            <set>

+                <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vf-modules/vf-module/'

+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id

+ + '/vf-module-data/vf-module-topology/'`"/>

+                <parameter name='vnf-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vnf-topology/'`"/>

+                <parameter name='service-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="`$error-message`" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-activate.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-activate.xml
new file mode 100644
index 0000000..8e93f1a
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-activate.xml
@@ -0,0 +1,175 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='sdwan-vf-operation-vpn-activate' mode='sync'>

+        <block atomic="true">

+            <call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-vf-vpn-input-parameters' mode='sync' ></call>

+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">

+                <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>

+                <parameter name="field1" value="__TIMESTAMP__"/>

+                <parameter name="field2" value="sdwan-network-topology-operation-activate"/>

+                <parameter name="field3" value="SDWAN-Activate"/>

+            </record>

+            <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >

+                <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />

+                <parameter name='contextPrefix' value='prop' />

+            </execute>

+            <for index='idx' start='0' end='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >

+                <block>

+                    <switch test="`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.name' value='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'topology'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.topology' value='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="esr-thirdparty-sdnc" 

+		key="esr-thirdparty-sdnc.thirdparty-sdnc-id = 'SDWANController' AND 

+		     depth = '1'"

+        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >

+                <outcome value='success'>

+                    <set>

+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />

+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />

+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />

+                    </set>

+                </outcome>

+                <outcome value='not-found'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="post"/>

+                <parameter name="responsePrefix" value="token-result"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <outcome value='success'>

+                    <set>

+                        <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />

+                    </set>

+                </outcome>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error executing get token rest api" />

+                    </return>

+                </outcome>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-vpn-create.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/vpn'`" />

+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="post"/>

+                <parameter name="responsePrefix" value="vpn-result"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+            </execute>

+            <set>

+                <parameter name='prop.vpn-id' value='`$vpn-result.success[0].id`' />

+                <parameter name='prop.vpn1Id' value='`$vpn-result.success[0].id`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-vpn-topology-create.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/' + $prop.vpn-id + '/topology'`" />

+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="post"/>

+                <parameter name="responsePrefix" value="vpn-result"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+            </execute>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='tenant-id' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$prop.tenant-id`' />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length + 1`' />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='vpn-id' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$prop.vpn-id`' />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length + 1`' />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />

+            </set>

+            <set>

+                <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vf-modules/vf-module/'

+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id

+ + '/vf-module-data/vf-module-topology/'`"/>

+                <parameter name='vnf-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vnf-topology/'`"/>

+                <parameter name='service-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status'  value='Active' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />

+            </set>

+            <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='sdwan-vpn' 

+      key='sdwan-vpn.sdwan-vpn-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >

+                <parameter name='sdwan-vpn-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                <parameter name='operational-status' value='Active' />

+                <parameter name='tenanat-id' value='`$prop.tenant-id`' />

+                <parameter name='vpn-id' value='`$prop.vpn-id`' />

+            </update>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="`$error-message`" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-create.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-create.xml
new file mode 100644
index 0000000..f352d1d
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-create.xml
@@ -0,0 +1,154 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='sdwan-vf-operation-vpn-create' mode='sync'>

+        <block atomic="true">

+            <call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-vf-vpn-input-parameters' mode='sync' ></call>

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="There are no VNFs in MD-SAL" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='vnf-index' value='`$idx`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='vf-index' value='0' />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <set>

+                            <parameter name='vf-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />

+                        </set>

+                        <for index='idx' start='0' end='`$vf-index`' >

+                            <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                                <outcome value='true'>

+                                    <return status='failure'>

+                                        <parameter name='ack-final' value='Y'/>

+                                        <parameter name="error-code" value="500" />

+                                        <parameter name="error-message" value="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id already found in service-data" />

+                                    </return>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <for index="idx" start="0" end="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">

+                <block>

+                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                        <parameter name="original_string" value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>

+                        <parameter name="regex" value="_"/>

+                        <parameter name="ctx_memory_result_key" value="param-prefix"/>

+                    </execute>

+                    <set>

+                        <parameter name="`vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`" value='`$param-prefix[$param-prefix_length -1]`'/>

+                    </set>

+                </block>

+            </for>

+            <for index="idx" start="0" end="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">

+                <block>

+                    <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.name' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'topology'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.topology' value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <set>

+                <parameter name='vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index + 1`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >

+                <parameter name="ctx-destination" value="prop.vpn-vf-index"/>

+            </execute>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-id' value='`$prop.vpn-vf-index`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vnf-information.' value='`$vf-module-topology-operation-input.vnf-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-topology.' value='`$tmp.vf-module-topology.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index+1`' />

+            </set>

+            <set>

+                <parameter name='vf-module-id' value='`$prop.site-vf-index`' />

+                <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vf-modules/vf-module/'

+ + $prop.vpn-vf-index

+ + '/vf-module-data/vf-module-topology/'`"/>

+                <parameter name='vnf-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vnf-topology/'`"/>

+                <parameter name='service-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.order-status'  value='Created' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />

+            </set>

+            <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='sdwan-vpn' 

+      key='sdwan-vpn.sdwan-vpn-id = $prop.vpn-vf-index' >

+                <parameter name='sdwan-vpn-id' value='`$prop.vpn-vf-index`' />

+                <parameter name='sdwan-vpn-name' value='`$prop.name`' />

+                <parameter name='topology' value='`$prop.topology`' />

+                <parameter name='operational-status' value='Created' />

+                <parameter name='model-customization-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />

+                <parameter name='model-invariant-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />

+                <parameter name='model-version-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />

+                <parameter name='selflink' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vf-module-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $service-data.vnfs.vnf[$vnf-index].vnf-id  + '/vnf-data/vf-modules/vf-module/' + $prop.vpn-vf-index + '/vf-module-data/'` " />

+            </save>

+            <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='generic-vnf:relationship-list' 

+      key='generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id' 

+      force="true" pfx="tmp.AnAI-data">

+                <parameter name="relationship-list.relationship[0].related-to" value="sdwan-vpn" />

+                <parameter name="relationship-list.relationship[0].related-link" value="`'/network/sdwan-vpns/sdwan-vpn/' + $prop.vpn-vf-index`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="sdwan-vpn.id" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.vpn-vf-index`" />

+                <!--save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource:relationship-list' 

+      key='site-resource.site-resource-id = $service-data.vnfs.vnf[$vnf-index].vnf-id' 

+      force="true" pfx="tmp.AnAI-data"><parameter name="relationship-list.relationship[0].related-to" value="sdwan-site" /><parameter name="relationship-list.relationship[0].related-link" value="`'/network/sdwan-sites/sdwan-site/' + $prop.site-vf-index`" /><parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="sdwan-vpn.id" /><parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.site-vf-index`" /-->

+            </save>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="`$error-message`" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-deactivate.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-deactivate.xml
new file mode 100644
index 0000000..f28d9c2
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-deactivate.xml
@@ -0,0 +1,169 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='sdwan-vf-operation-vpn-deactivate' mode='sync'>

+        <block atomic="true">

+            <call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-vf-vpn-input-parameters' mode='sync' ></call>

+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">

+                <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>

+                <parameter name="field1" value="__TIMESTAMP__"/>

+                <parameter name="field2" value="sdwan-network-topology-operation-activate"/>

+                <parameter name="field3" value="SDWAN-Activate"/>

+            </record>

+            <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >

+                <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />

+                <parameter name='contextPrefix' value='prop' />

+            </execute>

+            <for index='idx' start='0' end='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`' >

+                <block>

+                    <switch test="`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'name'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.name' value='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'topology'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.topology' value='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'vpn-id'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.vpn-id' value='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                    <switch test="`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'tenant-id'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.tenant-id' value='`$ctx.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="esr-thirdparty-sdnc" 

+		key="esr-thirdparty-sdnc.thirdparty-sdnc-id = 'SDWANController' AND 

+		     depth = '1'"

+        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >

+                <outcome value='success'>

+                    <set>

+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />

+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />

+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />

+                    </set>

+                </outcome>

+                <outcome value='not-found'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="post"/>

+                <parameter name="responsePrefix" value="token-result"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <outcome value='success'>

+                    <set>

+                        <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />

+                    </set>

+                </outcome>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error executing get token rest api" />

+                    </return>

+                </outcome>

+            </execute>

+            <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' ></call>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/' + $prop.vpn-id + '/topology'`" />

+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="delete"/>

+                <parameter name="responsePrefix" value="vpn-result"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-vpn-delete.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/vpn/action/batch-delete'`" />

+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="post"/>

+                <parameter name="responsePrefix" value="vpn-result"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+            </execute>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />

+            </set>

+            <set>

+                <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vf-modules/vf-module/'

+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id

+ + '/vf-module-data/vf-module-topology/'`"/>

+                <parameter name='vnf-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vnf-topology/'`"/>

+                <parameter name='service-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status'  value='PendingDelete' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />

+            </set>

+            <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='sdwan-vpn' 

+      key='sdwan-vpn.sdwan-vpn-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id' >

+                <parameter name='sdwan-vpn-id' value='`$vf-module-topology-operation-input.vf-module-information.vf-module-id`' />

+                <parameter name='operational-status' value='PendingDelete' />

+            </update>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="`$error-message`" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-delete.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-delete.xml
new file mode 100644
index 0000000..8b95c4c
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-vpn-delete.xml
@@ -0,0 +1,47 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='sdwan-vf-operation-vpn-delete' mode='sync'>

+        <block atomic="true">

+            <call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-vf-vpn-input-parameters' mode='sync' ></call>

+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">

+                <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>

+                <parameter name="field1" value="__TIMESTAMP__"/>

+                <parameter name="field2" value="sdwan-vf-module-operation-delete"/>

+                <parameter name="field3" value="SDWAN-Delete"/>

+            </record>

+            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource='sdwan-vpn' 

+        key='sdwan-vpn.sdwan-vpn-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id'></delete>

+            <set>

+                <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length" value="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length - 1`"/>

+            </set>

+            <set>

+                <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx]." value=""/>

+            </set>

+            <set>

+                <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vf-modules/vf-module/'

+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id

+ + '/vf-module-data/vf-module-topology/'`"/>

+                <parameter name='vnf-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vnf-topology/'`"/>

+                <parameter name='service-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="`$error-message`" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-activate.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-activate.xml
new file mode 100644
index 0000000..95f8369
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-activate.xml
@@ -0,0 +1,468 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='sdwan-vf-operation-wanport-activate' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="There are no VNFs in MD-SAL" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='vnf-index' value='`$idx`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                <outcome value='0'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vf-module-operation-input.vf-module-request-input.vf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vf-module-operation-input.vf-module-request-input.vf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <set>

+                            <parameter name='prop.site.deviceId_length' value='0' />

+                        </set>

+                        <set>

+                            <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />

+                        </set>

+                        <for index='idx' start='0' end='`$vf-module-length`' >

+                            <block atomic="true">

+                                <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                                    <outcome value='true'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name='tmp.vidx' value='`$idx`' />

+                                                <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />

+                                            </set>

+                                            <set>

+                                                <parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />

+                                            </set>

+                                            <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-wan-param' mode='sync' ></call>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </for>

+                        <for index='idx' start='0' end='`$vf-module-length`' >

+                            <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`">

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <for index="didx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`">

+                                            <block atomic="true">

+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">

+                                                    <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic-device-param.log"/>

+                                                    <parameter name="field1" value="__TIMESTAMP__"/>

+                                                    <parameter name="field2" value="'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].name'"/>

+                                                    <parameter name="field3" value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].name`'/>

+                                                </record>

+                                                <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].name == 'name'`">

+                                                    <outcome value='true'>

+                                                        <block atomic="true">

+                                                            <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">

+                                                                <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic-device-name.log"/>

+                                                                <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                <parameter name="field2" value="'prop.wan.deviceName'"/>

+                                                                <parameter name="field3" value='`$prop.wan.deviceName`'/>

+                                                                <parameter name="field4" value="'service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].value'"/>

+                                                                <parameter name="field5" value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].value`'/>

+                                                            </record>

+                                                            <switch test="`$prop.wan.deviceName == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].value`">

+                                                                <outcome value='true'>

+                                                                    <block atomic="true">

+                                                                        <for index="deviceidx" start="0" end="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`">

+                                                                            <block atomic="true">

+                                                                                <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].name == 'deviceId'`">

+                                                                                    <outcome value='true'>

+                                                                                        <set>

+                                                                                            <parameter name='prop.wan.deviceId' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$deviceidx].value`' />

+                                                                                        </set>

+                                                                                    </outcome>

+                                                                                </switch>

+                                                                            </block>

+                                                                        </for>

+                                                                        <set>

+                                                                            <parameter name='tmp.devicevidx' value='`$idx`' />

+                                                                        </set>

+                                                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">

+                                                                            <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic-last.log"/>

+                                                                            <parameter name="field1" value="__TIMESTAMP__"/>

+                                                                            <parameter name="field2" value="'tmp.devicevidx'"/>

+                                                                            <parameter name="field3" value='`$tmp.devicevidx`'/>

+                                                                        </record>

+                                                                    </block>

+                                                                </outcome>

+                                                            </switch>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </block>

+                                        </for>

+                                    </block>

+                                </outcome>

+                            </switch>

+                            <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.request-information.request-action == 'ActivateSiteInstance'`">

+                                <outcome value='true'>

+                                    <set>

+                                        <parameter name='tmp.siteVidx' value='`$idx`' />

+                                        <parameter name='ctx.site.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].`' />

+                                    </set>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >

+                <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />

+                <parameter name='contextPrefix' value='prop' />

+            </execute>

+            <for index="sidx" start="0" end="`$ctx.site.vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`">

+                <block atomic="true">

+                    <switch test="`$ctx.site.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$sidx].name == 'siteId'`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.wan.siteId' value='`$ctx.site.vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$sidx].value`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="esr-thirdparty-sdnc" 

+		key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND 

+		     depth = '1'"

+        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >

+                <outcome value='success'>

+                    <set>

+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />

+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />

+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />

+                    </set>

+                </outcome>

+                <outcome value='not-found'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="post"/>

+                <parameter name="responsePrefix" value="token-result"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <outcome value='success'>

+                    <set>

+                        <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />

+                    </set>

+                </outcome>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error executing get token rest api" />

+                    </return>

+                </outcome>

+            </execute>

+            <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' ></call>

+            <set>

+                <parameter name='portResp.success[0].id' value="12345" />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-port.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports'`" />

+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="post"/>

+                <parameter name="responsePrefix" value="portResp"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error executing Create device port rest api" />

+                    </return>

+                </outcome>

+                <outcome value='success'>

+                    <block atomic="true"></block>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='portResp.success[0].id' value="12345" />

+            </set>

+            <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`'>

+                <block>

+                    <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'IPMode'`">

+                        <outcome value='true'>

+                            <block atomic="true">

+                                <switch test="`GE == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].value`">

+                                    <outcome value='true'>

+                                        <set>

+                                            <parameter name='prop.wan.linkType' value="Ethernet" />

+                                        </set>

+                                    </outcome>

+                                </switch>

+                                <switch test="`LTE == $service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$didx].value`">

+                                    <outcome value='true'>

+                                        <set>

+                                            <parameter name='prop.wan.linkType' value="Cellular" />

+                                        </set>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-port.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports'`" />

+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="post"/>

+                <parameter name="responsePrefix" value="portResp"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error executing Create device port rest api" />

+                    </return>

+                </outcome>

+                <outcome value='success'>

+                    <block atomic="true"></block>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='prop.wan.devicePortId' value='`$portResp.success[0].id`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/network-orchestration-resources'`" />

+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="get"/>

+                <parameter name="responsePrefix" value="transportNetworksResp"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error executing Get transport network info rest api" />

+                    </return>

+                </outcome>

+                <outcome value='success'>

+                    <block atomic="true"></block>

+                </outcome>

+            </execute>

+            <for index="tidx" start="0" end="`$transportNetworksResp.data.transportNetworks_length`">

+                <block>

+                    <switch test="`$transportNetworksResp.data.transportNetworks[$tidx].name == $prop.wan.transportNetworkName`">

+                        <outcome value='true'>

+                            <set>

+                                <parameter name='prop.wan.transportNetworkId' value='`$transportNetworksResp.data.transportNetworks[$tidx].id`' />

+                            </set>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                <parameter name="original_string" value='`$prop.wan.ipAddress`'/>

+                <parameter name="regex" value="/"/>

+                <parameter name="ctx_memory_result_key" value="ipandMask"/>

+                <outcome value='success'>

+                    <set>

+                        <parameter name='prop.wan.ip-address' value='`$ipandMask[0]`' />

+                        <parameter name='prop.wan.prefixLength' value='`$ipandMask[1]`' />

+                    </set>

+                </outcome>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='error-code' value='' />

+                        <parameter name='error-message' value="An error occured while splitting sna1_route" />

+                    </return>

+                </outcome>

+            </execute>

+            <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length`'>

+                <block>

+                    <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$idx].name == 'IPMode'`">

+                        <outcome value='true'>

+                            <block atomic="true">

+                                <switch test="`Static == $prop.wan.IPMode`">

+                                    <outcome value='true'>

+                                        <set>

+                                            <parameter name='prop.wan.ip-address' value="" />

+                                            <parameter name='prop.wan.prefixLength' value="" />

+                                            <parameter name='prop.wan.providerIpAddress' value="" />

+                                            <parameter name='prop.wan.IpMode' value="static" />

+                                            <parameter name='prop.route.nextHopType' value="ip-address" />

+                                            <parameter name='prop.route.ipAddress' value="`$prop.wan.ipAddress`" />

+                                        </set>

+                                    </outcome>

+                                </switch>

+                                <switch test="`DHCP == $prop.wan.IPMode`">

+                                    <outcome value='true'>

+                                        <set>

+                                            <parameter name='prop.route.nextHopType' value="outbound-interface" />

+                                            <parameter name='prop.wan.IpMode' value="DHCP" />

+                                            <parameter name='prop.route.ipAddress' value="" />

+                                        </set>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-wan-port.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/transport-network-ports'`" />

+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="post"/>

+                <parameter name="responsePrefix" value="wanPortResp"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                <outcome value='failure'>

+                    <block atomic="true"></block>

+                </outcome>

+                <outcome value='success'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='prop.wan.wanPortId' value='`$wanPortResp.success[0].id`' />

+                        </set>

+                    </block>

+                </outcome>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-underlay.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/routing-protocol/static/action/batch-delete'`" />

+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="post"/>

+                <parameter name="responsePrefix" value="underlayspokeResp"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                <outcome value='failure'>

+                    <block></block>

+                </outcome>

+                <outcome value='success'>

+                    <block></block>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='devicePortId' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$prop.wan.devicePortId`' />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length + 1`' />

+            </set>

+            <set>

+                <parameter name='$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].name' value='wanPortId' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param[$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length].value' value='`$prop.wan.wanPortId`' />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-request-input.vf-module-input-parameters.param_length + 1`' />

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />

+            </set>

+            <set>

+                <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vf-modules/vf-module/'

+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id

+ + '/vf-module-data/vf-module-topology/'`"/>

+                <parameter name='vnf-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vnf-topology/'`"/>

+                <parameter name='service-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status'  value='Active' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />

+            </set>

+            <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='wan-port-config' 

+      key='wan-port-config.wan-port-config-id = $vf-module-topology-operation-input.vnf-information.vnf-id' >

+                <parameter name="wan-port-config-id" value="`$vf-module-topology-operation-input.vnf-information.vnf-id`" />

+                <parameter name='operational-status' value='Active' />

+                <parameter name='device-port-id' value='`$prop.wan.devicePortId`' />

+                <parameter name='wan-port-id' value='`$prop.wan.wanPortId`' />

+                <parameter name='model-customization-id' value='`$vf-module-topology-operation-input.vnf-information.onap-model-information.model-customization-uuid`' />

+                <parameter name='model-invariant-id' value='`$vf-module-topology-operation-input.vnf-information.onap-model-information.model-invariant-uuid`' />

+                <parameter name='model-version-id' value='`$vf-module-topology-operation-input.vnf-information.onap-model-information.model-uuid`' />

+            </update>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="`$error-message`" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-create.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-create.xml
new file mode 100644
index 0000000..c849449
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-create.xml
@@ -0,0 +1,144 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='sdwan-vf-operation-wanport-create' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="There are no VNFs in MD-SAL" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='vnf-index' value='`$idx`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='vf-index' value='0' />

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <set>

+                            <parameter name='vf-index' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />

+                        </set>

+                        <for index='idx' start='0' end='`$vf-index`' >

+                            <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                                <outcome value='true'>

+                                    <return status='failure'>

+                                        <parameter name='ack-final' value='Y'/>

+                                        <parameter name="error-code" value="500" />

+                                        <parameter name="error-message" value="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id already found in service-data" />

+                                    </return>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <for index="idx" start="0" end="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">

+                <block>

+                    <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >

+                        <parameter name="original_string" value='`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`'/>

+                        <parameter name="regex" value="_"/>

+                        <parameter name="ctx_memory_result_key" value="param-prefix"/>

+                    </execute>

+                    <set>

+                        <parameter name="`vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$idx].name`" value='`$param-prefix[$param-prefix_length -1]`'/>

+                    </set>

+                </block>

+            </for>

+            <set>

+                <parameter name='vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />

+            </set>

+            <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-wan-param' mode='sync' ></call>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index + 1`' />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='generateUUID' >

+                <parameter name="ctx-destination" value="prop.wan-port-vf-index"/>

+            </execute>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-id' value='`$prop.site-vf-index`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vnf-information.' value='`$vf-module-topology-operation-input.vnf-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-request-input.' value='`$vf-module-topology-operation-input.vf-module-request-input.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-topology.' value='`$tmp.vf-module-topology.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length' value='`$vf-index+1`' />

+            </set>

+            <set>

+                <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vf-modules/vf-module/'

+ + $prop.wan-port-vf-index

+ + '/vf-module-data/vf-module-topology/'`"/>

+                <parameter name='vnf-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vnf-topology/'`"/>

+                <parameter name='service-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.order-status'  value='Created' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$vf-index].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />

+            </set>

+            <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='wan-port-config' 

+      key='wan-port-config.wan-port-config-id = $prop.vnf-index' >

+                <parameter name="wan-port-config-id" value="`$prop.vnf-index`" />

+                <parameter name="wan-port-config-name" value="`$prop.wan.name`" />

+                <parameter name="device-id" value="`$prop.wan.deviceName`" />

+                <parameter name='vlan-id' value="`$prop.wan.vlanId`" />

+                <parameter name="ip-address" value="`$prop.wan.ipAddress`" />

+                <parameter name="provider-ip-address" value="`$prop.wan.providerIpAddress`" />

+                <parameter name="input-bandwidth" value="`$prop.wan.inputBandwidth`" />

+                <parameter name="output-bandwidth" value="`$prop.wan.outputBandwidth`" />

+                <parameter name="description" value="`$prop.wan.description`" />

+                <parameter name="port-type" value="`$prop.wan.portType`" />

+                <parameter name="port-number" value="`$prop.wan.portNumber`" />

+                <parameter name="transport-network-name" value="`$prop.wan.transportNetworkName`" />

+                <parameter name='operational-status' value='Created' />

+                <parameter name='model-customization-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-customization-uuid`' />

+                <parameter name='model-invariant-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-invariant-uuid`' />

+                <parameter name='model-version-id' value='`$vf-module-topology-operation-input.vf-module-information.onap-model-information.model-version`' />

+                <parameter name='selflink' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vf-module-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $service-data.vnfs.vnf[$vnf-index].vnf-id  + '/vnf-data/vf-modules/vf-module/' + $prop.site-vf-index + '/vf-module-data/'` " />

+            </save>

+            <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='generic-vnf:relationship-list' 

+      key='generic-vnf.vnf-id = $service-data.vnfs.vnf[$vnf-index].vnf-id' 

+      force="true" pfx="tmp.AnAI-data">

+                <parameter name="relationship-list.relationship[0].related-to" value="sdwan-vpn" />

+                <parameter name="relationship-list.relationship[0].related-link" value="`'/network/sdwan-vpns/sdwan-vpn/' + $prop.site-vf-index`" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="sdwan-vpn.id" />

+                <parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.site-vf-index`" />

+                <!--save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource:relationship-list' 

+      key='site-resource.site-resource-id = $service-data.vnfs.vnf[$vnf-index].vnf-id' 

+      force="true" pfx="tmp.AnAI-data"><parameter name="relationship-list.relationship[0].related-to" value="sdwan-site" /><parameter name="relationship-list.relationship[0].related-link" value="`'/network/sdwan-sites/sdwan-site/' + $prop.site-vf-index`" /><parameter name="relationship-list.relationship[0].relationship-data[0].relationship-key" value="sdwan-vpn.id" /><parameter name="relationship-list.relationship[0].relationship-data[0].relationship-value" value="`$prop.site-vf-index`" /-->

+            </save>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="`$error-message`" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-deactivate.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-deactivate.xml
new file mode 100644
index 0000000..ab5d5b0
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-deactivate.xml
@@ -0,0 +1,208 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='sdwan-vf-operation-wanport-deactivate' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="404" />

+                        <parameter name="error-message" value="There are no VNFs in MD-SAL" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='vnf-index' value='`$idx`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                <outcome value='0'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vf-module-operation-input.vf-module-request-input.vf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vf-module-operation-input.vf-module-request-input.vf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <set>

+                            <parameter name='prop.site.deviceId_length' value='0' />

+                        </set>

+                        <set>

+                            <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />

+                        </set>

+                        <for index='idx' start='0' end='`$vf-module-length`' >

+                            <block atomic="true">

+                                <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                                    <outcome value='true'>

+                                        <block atomic="true">

+                                            <set>

+                                                <parameter name='tmp.vidx' value='`$idx`' />

+                                                <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />

+                                            </set>

+                                            <set>

+                                                <parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />

+                                            </set>

+                                            <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-wan-param' mode='sync' ></call>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >

+                <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />

+                <parameter name='contextPrefix' value='prop' />

+            </execute>

+            <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 

+		resource="esr-thirdparty-sdnc" 

+		key="esr-thirdparty-sdnc.thirdparty-sdnc-id = SDWANController AND 

+		     depth = '1'"

+        pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >

+                <outcome value='success'>

+                    <set>

+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />

+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />

+                        <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />

+                    </set>

+                </outcome>

+                <outcome value='not-found'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />

+                    </return>

+                </outcome>

+            </get-resource>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="post"/>

+                <parameter name="responsePrefix" value="token-result"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <outcome value='success'>

+                    <set>

+                        <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />

+                    </set>

+                </outcome>

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error executing get token rest api" />

+                    </return>

+                </outcome>

+            </execute>

+            <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-tenant-auth' mode='sync' ></call>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-wan-port-del.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/transport-network-ports/action/batch-delete'`" />

+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="post"/>

+                <parameter name="responsePrefix" value="portResp"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error executing Create vpn rest api" />

+                    </return>

+                </outcome>

+                <outcome value='success'>

+                    <block atomic="true"></block>

+                </outcome>

+            </execute>

+            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-device-port-del.json'`" />

+                <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/ports/action/batch-delete'`" />

+                <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />

+                <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />

+                <parameter name="format" value="json"/>

+                <parameter name="httpMethod" value="post"/>

+                <parameter name="responsePrefix" value="portResp"/>

+                <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>

+                <parameter name="trustStorePassword" value="adminadmin"/>

+                <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>

+                <parameter name="keyStorePassword" value="adminadmin"/>

+                <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />

+                <outcome value='failure'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="Error executing Create vpn rest api" />

+                    </return>

+                </outcome>

+                <outcome value='success'>

+                    <block atomic="true"></block>

+                </outcome>

+            </execute>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.sdnc-request-header.' value='`$vf-module-topology-operation-input.sdnc-request-header.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.request-information.' value='`$vf-module-topology-operation-input.request-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.service-information.' value='`$vf-module-topology-operation-input.service-information.`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-information.' value='`$vf-module-topology-operation-input.vf-module-information.`' />

+            </set>

+            <set>

+                <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vf-modules/vf-module/'

+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id

+ + '/vf-module-data/vf-module-topology/'`"/>

+                <parameter name='vnf-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vnf-topology/'`"/>

+                <parameter name='service-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <set>

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status'  value='PendingDelete' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-rpc-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`' />

+                <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.last-action'  value='`$vf-module-topology-operation-input.sdnc-request-header.request-action`' />

+            </set>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="`$error-message`" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-delete.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-delete.xml
new file mode 100644
index 0000000..587f6cc
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_sdwan-vf-operation-wanport-delete.xml
@@ -0,0 +1,135 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='sdwan-vf-operation-wanport-delete' mode='sync'>

+        <block atomic="true">

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='vnf-index' value='`$idx`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                <outcome value='0'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+                <outcome value='Other'>

+                    <block atomic="true">

+                        <set>

+                            <parameter name='vf-module-length' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' />

+                        </set>

+                        <for index='idx' start='0' end='`$vf-module-length`' >

+                            <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                                <outcome value='true'>

+                                    <block atomic="true">

+                                        <set>

+                                            <parameter name='tmp.vidx' value='`$idx`' />

+                                            <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$idx].vf-module-data.`' />

+                                        </set>

+                                        <set>

+                                            <parameter name='vf-module-request-input.' value='`$ctx.vf-module-data.vf-module-request-input.`' />

+                                        </set>

+                                        <call module='GENERIC-RESOURCE-API' rpc='sdwan-get-vf-module-device-param' mode='sync' ></call>

+                                    </block>

+                                </outcome>

+                            </switch>

+                        </for>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test="`$tmp.vidx`">

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.vidx].vf-module-data.vf-module-level-oper-status.order-status`'>

+                <outcome value='PendingDelete'>

+                    <block atomic="true"></block>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`'VNF is not in appropriate state for activate. Current state is ' + $service-data.vnfs.vnf[$tmp.nidx].vnf-data.vnf-level-oper-status.order-status`" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='lidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >

+                <block atomic="true">

+                    <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$lidx].vf-module-data.vf-module-information.vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                        <outcome value='false'>

+                            <block atomic="true">

+                                <set>

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-id' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-id`' />

+                                    <parameter name='service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen].vnf-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[lidx].vf-module-data.`' />

+                                </set>

+                                <set>

+                                    <parameter name='prop.vnfidxLen' value='`$prop.vnfidxLen + 1`' />

+                                </set>

+                            </block>

+                        </outcome>

+                    </switch>

+                </block>

+            </for>

+            <set>

+                <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length" value='`$prop.vnfidxLen`'/>

+            </set>

+            <set>

+                <parameter name="service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$prop.vnfidxLen]." value=""/>

+            </set>

+            <set>

+                <parameter name='vf-module-object-path' value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vf-modules/vf-module/'

+ + $vf-module-topology-operation-input.vf-module-information.vf-module-id

+ + '/vf-module-data/vf-module-topology/'`"/>

+                <parameter name='vnf-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/vnfs/vnf/'

+ + $service-data.vnfs.vnf[$vnf-index].vnf-id

+ + '/vnf-data/vnf-topology/'`"/>

+                <parameter name='service-object-path'

+ value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'

+ + $vf-module-topology-operation-input.service-information.service-instance-id

+ + '/service-data/service-topology/'`"/>

+            </set>

+            <delete plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" resource='site-resource' 

+        key='site-resource.site-resource-id = $vf-module-topology-operation-input.vf-module-information.vf-module-id'></delete>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="`$error-message`" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_validate-sdwan-vf-vpn-input-parameters.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_validate-sdwan-vf-vpn-input-parameters.xml
new file mode 100644
index 0000000..de558b8
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_validate-sdwan-vf-vpn-input-parameters.xml
@@ -0,0 +1,323 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='validate-sdwan-vf-vpn-input-parameters' mode='sync'>

+        <block atomic="true">

+            <switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="sdnc-request-header.svc-request-id is a required input" />

+                    </return>

+                </outcome>

+            </switch>

+            <switch test='`$service-data.vnfs.vnf_length`'>

+                <outcome value=''>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="vnf entry not found in service-data" />

+                    </return>

+                </outcome>

+            </switch>

+            <for index='idx' start='0' end='`$service-data.vnfs.vnf_length`' >

+                <switch test="`$service-data.vnfs.vnf[$idx].vnf-id == $vf-module-topology-operation-input.vnf-information.vnf-id`">

+                    <outcome value='true'>

+                        <set>

+                            <parameter name='vnf-index' value='`$idx`' />

+                        </set>

+                    </outcome>

+                </switch>

+            </for>

+            <switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>

+                <outcome value='create'>

+                    <block atomic="true">

+                        <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>

+                            <outcome value='CreateSDWANVpnInstance'>

+                                <block atomic="true">

+                                    <for index="i" start="0" end="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param_length`">

+                                        <block>

+                                            <set>

+                                                <parameter name='tmp.name' value='' />

+                                                <parameter name='tmp.value' value='' />

+                                            </set>

+                                            <set>

+                                                <parameter name='tmp.name' value="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].name`"/>

+                                                <parameter name='tmp.value' value="`$vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[$i].value`"/>

+                                            </set>

+                                            <switch test="`$tmp.name`">

+                                                <outcome value='name'>

+                                                    <switch test="`$tmp.value`">

+                                                        <outcome value=''>

+                                                            <return status='failure'>

+                                                                <parameter name='ack-final' value='Y'/>

+                                                                <parameter name="error-code" value="500" />

+                                                                <parameter name="error-message" value="`'vf-module-request-input.vf-module-input-parameters.param '+ $tmp.name +' is a required input'`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value='topology'>

+                                                    <switch test="`$tmp.value`">

+                                                        <outcome value=''>

+                                                            <return status='failure'>

+                                                                <parameter name='ack-final' value='Y'/>

+                                                                <parameter name="error-code" value="500" />

+                                                                <parameter name="error-message" value="`'vf-module-request-input.vf-module-input-parameters.param '+ $tmp.name +' is a required input'`" />

+                                                            </return>

+                                                        </outcome>

+                                                    </switch>

+                                                </outcome>

+                                                <outcome value=''>

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name="error-code" value="500" />

+                                                        <parameter name="error-message" value="`'vf-module-topology-operation-input.vf-module-request-input.vf-module-input-parameters.param[' + $i + ']' + '.name is a required input'`" />

+                                                    </return>

+                                                </outcome>

+                                            </switch>

+                                        </block>

+                                    </for>

+                                </block>

+                            </outcome>

+                            <outcome value='Other'>

+                                <return status='failure'>

+                                    <parameter name='ack-final' value='Y'/>

+                                    <parameter name="error-code" value="500" />

+                                    <parameter name="error-message" value="request-information.request-action is required to be SOTN CreateVPNNetworkInstance for svc-action=create" />

+                                </return>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='activate'>

+                    <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>

+                        <outcome value='ActivateSDWANVpnInstance'>

+                            <block atomic="true">

+                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >

+                                    <parameter name="vf-module-topology-operation-input.vf-module-information.vf-module-id" value="$vf-module-topology-operation-input.vf-module-information.vf-module-id"/>

+                                </execute>

+                                <switch test="`$vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                                    <outcome value=''>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />

+                                        </return>

+                                    </outcome>

+                                </switch>

+                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                                    <outcome value=''>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data" />

+                                        </return>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <block atomic="true">

+                                            <for index='nidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >

+                                                <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                                                    <outcome value='true'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name='tmp.nidx' value='`$nidx`' />

+                                                                <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-data.`' />

+                                                            </set>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </for>

+                                            <switch test="`$tmp.nidx`">

+                                                <outcome value=''>

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name="error-code" value="500" />

+                                                        <parameter name="error-message" value="vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data" />

+                                                    </return>

+                                                </outcome>

+                                            </switch>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`'>

+                                    <outcome value='Created'>

+                                        <block atomic="true"></block>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`'vf-module is not in appropriate state for activate. Current state is ' + $service-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`" />

+                                        </return>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </outcome>

+                        <outcome value='Other'>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="request-information.request-action is required to be SOTN ActivateVPNNetworkInstance for svc-action=activate" />

+                            </return>

+                        </outcome>

+                    </switch>

+                </outcome>

+                <outcome value='deactivate'>

+                    <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>

+                        <outcome value='DeactivateSDWANVpnInstance'>

+                            <block atomic="true">

+                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >

+                                    <parameter name="vf-module-topology-operation-input.vf-module-information.vf-module-id" value="$vf-module-topology-operation-input.vf-module-information.vf-module-id"/>

+                                </execute>

+                                <switch test="`$vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                                    <outcome value=''>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />

+                                        </return>

+                                    </outcome>

+                                </switch>

+                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                                    <outcome value=''>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data" />

+                                        </return>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <block atomic="true">

+                                            <for index='nidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >

+                                                <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                                                    <outcome value='true'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name='tmp.nidx' value='`$nidx`' />

+                                                                <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-data.`' />

+                                                            </set>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </for>

+                                            <switch test="`$tmp.nidx`">

+                                                <outcome value=''>

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name="error-code" value="500" />

+                                                        <parameter name="error-message" value="vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data" />

+                                                    </return>

+                                                </outcome>

+                                            </switch>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`'>

+                                    <outcome value='Active'>

+                                        <block atomic="true"></block>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`'vf-module is not in appropriate state for deactivate. Current state is ' + $service-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`" />

+                                        </return>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </outcome>

+                        <outcome value='Other'>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="request-information.request-action is required to be SOTN DeactivateVPNNetworkInstance for svc-action=deactivate" />

+                            </return>

+                        </outcome>

+                    </switch>

+                </outcome>

+                <outcome value='delete'>

+                    <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>

+                        <outcome value='DeleteSDWANVpnInstance'>

+                            <block atomic="true">

+                                <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='requiredParameters' >

+                                    <parameter name="vf-module-topology-operation-input.vf-module-information.vf-module-id" value="$vf-module-topology-operation-input.vf-module-information.vf-module-id"/>

+                                </execute>

+                                <switch test="`$vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                                    <outcome value=''>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="network-request-input.network-input-parameters.name is a required input" />

+                                        </return>

+                                    </outcome>

+                                </switch>

+                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`'>

+                                    <outcome value=''>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data" />

+                                        </return>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <block atomic="true">

+                                            <for index='nidx' start='0' end='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module_length`' >

+                                                <switch test="`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-id == $vf-module-topology-operation-input.vf-module-information.vf-module-id`">

+                                                    <outcome value='true'>

+                                                        <block atomic="true">

+                                                            <set>

+                                                                <parameter name='tmp.nidx' value='`$nidx`' />

+                                                                <parameter name='ctx.vf-module-data.' value='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$nidx].vf-module-data.`' />

+                                                            </set>

+                                                        </block>

+                                                    </outcome>

+                                                </switch>

+                                            </for>

+                                            <switch test="`$tmp.nidx`">

+                                                <outcome value=''>

+                                                    <return status='failure'>

+                                                        <parameter name='ack-final' value='Y'/>

+                                                        <parameter name="error-code" value="500" />

+                                                        <parameter name="error-message" value="vf-module-topology-operation-input.vf-module-request-input.vf-module-id not found in service-data" />

+                                                    </return>

+                                                </outcome>

+                                            </switch>

+                                        </block>

+                                    </outcome>

+                                </switch>

+                                <switch test='`$service-data.vnfs.vnf[$vnf-index].vnf-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`'>

+                                    <outcome value='PendingDelete'>

+                                        <block atomic="true"></block>

+                                    </outcome>

+                                    <outcome value='Other'>

+                                        <return status='failure'>

+                                            <parameter name='ack-final' value='Y'/>

+                                            <parameter name="error-code" value="500" />

+                                            <parameter name="error-message" value="`'vf-module is not in appropriate state for delete. Current state is ' + $service-data.vf-modules.vf-module[$tmp.nidx].vf-module-data.vf-module-level-oper-status.order-status`" />

+                                        </return>

+                                    </outcome>

+                                </switch>

+                            </block>

+                        </outcome>

+                        <outcome value='Other'>

+                            <return status='failure'>

+                                <parameter name='ack-final' value='Y'/>

+                                <parameter name="error-code" value="500" />

+                                <parameter name="error-message" value="request-information.request-action is required to be SOTN DeleteVPNNetworkInstance for svc-action=delete" />

+                            </return>

+                        </outcome>

+                    </switch>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`$vf-module-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`" />

+                    </return>

+                </outcome>

+            </switch>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_vf-module-topology-operation.xml b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_vf-module-topology-operation.xml
new file mode 100644
index 0000000..f8ee6d3
--- /dev/null
+++ b/platform-logic/generic-resource-api/src/main/xml/sdwan/GENERIC-RESOURCE-API_vf-module-topology-operation.xml
@@ -0,0 +1,122 @@
+<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='GENERIC-RESOURCE-API' version='${project.version}'>

+    <method rpc='vf-module-topology-operation' mode='sync'>

+        <block atomic="true">

+            <call module='GENERIC-RESOURCE-API' rpc='validate-vf-module-input' mode='sync' ></call>

+            <switch test='`$vf-module-topology-operation-input.sdnc-request-header.svc-action`'>

+                <outcome value='assign'>

+                    <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-assign' mode='sync' ></call>

+                </outcome>

+                <outcome value='unassign'>

+                    <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-unassign' mode='sync' ></call>

+                </outcome>

+                <outcome value='changeassign'>

+                    <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-changeassign' mode='sync' ></call>

+                </outcome>

+                <outcome value='create'>

+                    <block atomic="true">

+                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">

+                            <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>

+                            <parameter name="field1" value="__TIMESTAMP__"/>

+                            <parameter name="field2" value="request-action"/>

+                            <parameter name="field3" value='`$vf-module-topology-operation-input.request-information.request-action`'/>

+                        </record>

+                        <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>

+                            <outcome value='CreateSDWANVpnInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-vpn-create' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='CreateSiteInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-site-create' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='CreateSDWANDeviceInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-device-create' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='CreateSDWANPortInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-wanport-create' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='Other'>

+                                <block></block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='activate'>

+                    <block atomic="true">

+                        <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>

+                            <outcome value='ActivateSDWANVpnInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-vpn-activate' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='ActivateSiteInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-site-activate' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='ActivateSDWANDeviceInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-device-activate' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='ActivateSDWANPortInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-wanport-activate' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='Other'>

+                                <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-activate' mode='sync' ></call>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='deactivate'>

+                    <block atomic="true">

+                        <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>

+                            <outcome value='DeactivateSDWANVpnInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-vpn-deactivate' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='DeactivateSiteInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-site-deactivate' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='DeactivateSDWANDeviceInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-device-deactivate' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='DeactivateSDWANPortInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-wanport-deactivate' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='Other'>

+                                <call module='GENERIC-RESOURCE-API' rpc='vf-module-topology-operation-deactivate' mode='sync' ></call>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='delete'>

+                    <block atomic="true">

+                        <switch test='`$vf-module-topology-operation-input.request-information.request-action`'>

+                            <outcome value='DeleteSDWANVpnInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-vpn-delete' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='DeleteSiteInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-site-delete' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='DeleteSDWANDeviceInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-device-delete' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='DeleteSDWANPortInstance'>

+                                <call module='GENERIC-RESOURCE-API' rpc='sdwan-vf-operation-wanport-delete' mode='sync' ></call>

+                            </outcome>

+                            <outcome value='Other'>

+                                <block></block>

+                            </outcome>

+                        </switch>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <return status='failure'>

+                        <parameter name='ack-final' value='Y'/>

+                        <parameter name="error-code" value="500" />

+                        <parameter name="error-message" value="`$vnf-topology-operation-input.sdnc-request-header.svc-action + ' is not a valid svc-action'`" />

+                    </return>

+                </outcome>

+            </switch>

+            <return status='success'>

+                <parameter name="ack-final-indicator" value="Y" />

+                <parameter name="error-code" value="200" />

+                <parameter name="error-message" value="`$error-message`" />

+            </return>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/lcm/src/main/json/LCM_rollback.json b/platform-logic/lcm/src/main/json/LCM_rollback.json
new file mode 100644
index 0000000..96adf3f
--- /dev/null
+++ b/platform-logic/lcm/src/main/json/LCM_rollback.json
@@ -0,0 +1,702 @@
+[

+    {

+        "id": "367cac6c.e28ad4",

+        "type": "method",

+        "name": "rollback",

+        "xml": "<method rpc='rollback' mode='sync'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 606,

+        "y": 73,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "397a12a.10f34ee"

+            ]

+        ]

+    },

+    {

+        "id": "b7a7c5dd.d286a8",

+        "type": "service-logic",

+        "name": "LCM ${project.version}",

+        "module": "LCM",

+        "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='LCM' version='${project.version}'>",

+        "outputs": 1,

+        "x": 393.99993896484375,

+        "y": 74,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "367cac6c.e28ad4"

+            ]

+        ]

+    },

+    {

+        "id": "2749994d.fe16d6",

+        "type": "execute",

+        "name": "execute AnsibleA.reqExec",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapter' method='reqExec' >\n<parameter name='AgentUrl' value='`$prop.ansible.agenturl`'/>\n<parameter name='User' value='`$prop.ansible.user`'/>\n<parameter name='Password' value='`$prop.ansible.password`'/>\n<parameter name='LocalParameters' value='`$prop.ansible.lcm.localparameters`'/>\n<parameter name='EnvParameters' value='`$rollback-input.payload`'/>\n<parameter name='NodeList' value=\"`$nodelist`\"/>\n<parameter name='Timeout' value='`$prop.ansible.timeout`'/>\n<parameter name='Version' value='`$prop.ansible.version`'/>\n<parameter name='Id' value='`$rollback-input.common-header.request-id`'/>\n<parameter name='PlaybookName' value='`$playbookname`'/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 461.00001525878906,

+        "y": 681,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "d80c72ca.e0d3b",

+                "3b639a7b.0ca876",

+                "f4b3d5c4.d9b698"

+            ]

+        ]

+    },

+    {

+        "id": "3f74fb5f.f66a64",

+        "type": "switchNode",

+        "name": "switch",

+        "xml": "<switch test=\"`$org.onap.appc.adapter.ansible.result.code`\">\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 860.9999389648438,

+        "y": 789.0000305175781,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "5e7ae3c.af98c1c",

+                "80745976.4dae58",

+                "2d735711.50c158"

+            ]

+        ]

+    },

+    {

+        "id": "5e7ae3c.af98c1c",

+        "type": "other",

+        "name": "outcome 500",

+        "xml": "<outcome value='500'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1005.9999389648438,

+        "y": 787.0000381469727,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "c157f020.8fa16"

+            ]

+        ]

+    },

+    {

+        "id": "80745976.4dae58",

+        "type": "other",

+        "name": "outcome 100",

+        "xml": "<outcome value='100'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1002.9999389648438,

+        "y": 844.0000305175781,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "8633c607.bab378"

+            ]

+        ]

+    },

+    {

+        "id": "8633c607.bab378",

+        "type": "execute",

+        "name": "execute reqExecResult",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapter' method='reqExecResult' >\n    <parameter name='AgentUrl' value='`$prop.ansible.agenturl`'/>\n\t<parameter name='User' value='`$prop.ansible.user`'/>\n\t<parameter name='Password' value='`$prop.ansible.password`'/>\n\t<parameter name='Id' value='`$org.onap.appc.adapter.ansible.Id`'/>\n\t<parameter name='PlaybookName' value='`$playbookname`'/>\n\t\n\n\n\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1190.9999389648438,

+        "y": 843.0000305175781,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "7d406d3c.e2a7a4",

+                "c98b9933.a78a78"

+            ]

+        ]

+    },

+    {

+        "id": "3b639a7b.0ca876",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 719.9999389648438,

+        "y": 702.0000915527344,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "c157f020.8fa16"

+            ]

+        ]

+    },

+    {

+        "id": "d80c72ca.e0d3b",

+        "type": "other",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 721.9999389648438,

+        "y": 754.0000610351562,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "3f74fb5f.f66a64"

+            ]

+        ]

+    },

+    {

+        "id": "7d406d3c.e2a7a4",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1359.9999389648438,

+        "y": 801.0000381469727,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "c157f020.8fa16"

+            ]

+        ]

+    },

+    {

+        "id": "2d735711.50c158",

+        "type": "other",

+        "name": "outcome 101",

+        "xml": "<outcome value='101'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1002.9999389648438,

+        "y": 745.0000686645508,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "c157f020.8fa16"

+            ]

+        ]

+    },

+    {

+        "id": "c98b9933.a78a78",

+        "type": "success",

+        "name": "success",

+        "xml": "<outcome value='success'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1367.9998779296875,

+        "y": 849.0001220703125,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "5b424098.08bd5"

+            ]

+        ]

+    },

+    {

+        "id": "4e1d4556.7dd52c",

+        "type": "returnSuccess",

+        "name": "return success",

+        "xml": "<return status='success'>\n<parameter name='status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />\n<parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`'/>",

+        "comments": "",

+        "x": 1661.9998779296875,

+        "y": 906.0000610351562,

+        "z": "6f1e5235.30d27c",

+        "wires": []

+    },

+    {

+        "id": "d900eabd.53e918",

+        "type": "dgstart",

+        "name": "DGSTART",

+        "outputs": 1,

+        "x": 209,

+        "y": 73,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "b7a7c5dd.d286a8"

+            ]

+        ]

+    },

+    {

+        "id": "397a12a.10f34ee",

+        "type": "block",

+        "name": "block : atomic",

+        "xml": "<block atomic='true'>",

+        "atomic": "true",

+        "comments": "",

+        "outputs": 1,

+        "x": 206.9166259765625,

+        "y": 165.08331298828125,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "2749994d.fe16d6",

+                "73725554.5774bc",

+                "8603ce63.b7c47",

+                "9a79bc82.279ce",

+                "cc7baeb9.6a3dc",

+                "b9b832a7.ed87d",

+                "16e37417.d2c8bc",

+                "763cfac9.48a8a4"

+            ]

+        ]

+    },

+    {

+        "id": "73725554.5774bc",

+        "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%/lcm-dg.properties' />\n    <parameter name='contextPrefix' value='prop' />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 505.0000305175781,

+        "y": 198.08334350585938,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "c9d7b572.9b1b08",

+        "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.lcm.dmaap.publish.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.lcm.dmaap.url`' />\n    <parameter name='restapiUser' value='`$prop.lcm.dmaap.user`' />\n    <parameter name='restapiPassword' value='`$prop.lcm.dmaap.password`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='POST' />\n    <parameter name='contentType' value='application/json' />\n    <parameter name=\"responsePrefix\" value=\"lcm\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1671.9998779296875,

+        "y": 651.0834045410156,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "18a85145.032faf"

+            ]

+        ]

+    },

+    {

+        "id": "18a85145.032faf",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1841.9998168945312,

+        "y": 650.0834045410156,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "1f387472.1096ac"

+            ]

+        ]

+    },

+    {

+        "id": "c157f020.8fa16",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1474.9998168945312,

+        "y": 675.0834045410156,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "c9d7b572.9b1b08",

+                "b8d2a948.9f6268",

+                "9c77e950.a59098"

+            ]

+        ]

+    },

+    {

+        "id": "246949fc.089f56",

+        "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.lcm.dmaap.publish.templatefile`\" />\n    <parameter name='restapiUrl' value='`$prop.lcm.dmaap.url`' />\n    <parameter name='restapiUser' value='`$prop.lcm.dmaap.user`' />\n    <parameter name='restapiPassword' value='`$prop.lcm.dmaap.password`' />\n    <parameter name='format' value='json' />\n    <parameter name='httpMethod' value='POST' />\n    <parameter name='contentType' value='application/json' />\n    <parameter name=\"responsePrefix\" value=\"lcm\" />\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1672.4998779296875,

+        "y": 856.0833740234375,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "3c6c9ce.ec3e364"

+            ]

+        ]

+    },

+    {

+        "id": "3c6c9ce.ec3e364",

+        "type": "failure",

+        "name": "failure",

+        "xml": "<outcome value='failure'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 1840.4998779296875,

+        "y": 856.0833740234375,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "8c845e57.511d"

+            ]

+        ]

+    },

+    {

+        "id": "1f387472.1096ac",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\"> \n\t<parameter name=\"logger\" value=\"message-log\"/> \n\t<parameter name=\"field1\" value='Failed to Publish to DMaap'/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1961.9998779296875,

+        "y": 649.0833740234375,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b8d2a948.9f6268",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='status.code' value='401' />\n<parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />\n",

+        "comments": "",

+        "x": 1653.91650390625,

+        "y": 702.0834045410156,

+        "z": "6f1e5235.30d27c",

+        "wires": []

+    },

+    {

+        "id": "8c845e57.511d",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\"> \n\t<parameter name=\"logger\" value=\"message-log\"/> \n\t<parameter name=\"field1\" value='Failed to Publish to DMaap'/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 1968.9166259765625,

+        "y": 856.0833740234375,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "9c77e950.a59098",

+        "type": "set",

+        "name": "set DmaapReq",

+        "xml": "<set>\n<parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>\n<parameter name='lcm-dmaap.correlation-id' value=\"`$rollback-input.common-header.request-id + '-' + $rollback-input.common-header.sub-request-id`\"/>\n<parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>\n<parameter name='lcm-dmaap.rpc-name' value='rollback'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$rollback-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$rollback-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$rollback-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$rollback-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$rollback-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$rollback-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$rollback-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$rollback-input.common-header.flags.ttl`'/>\n<parameter name='lcm-dmaap.status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />\n<parameter name='lcm-dmaap.status.message' value='`$org.onap.appc.adapter.ansible.message`'/>\n",

+        "comments": "",

+        "x": 1658.9998779296875,

+        "y": 598.0833740234375,

+        "z": "6f1e5235.30d27c",

+        "wires": []

+    },

+    {

+        "id": "5b424098.08bd5",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 1495.9998779296875,

+        "y": 850.0833740234375,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "246949fc.089f56",

+                "4d96ab15.f92c04",

+                "4e1d4556.7dd52c"

+            ]

+        ]

+    },

+    {

+        "id": "4d96ab15.f92c04",

+        "type": "set",

+        "name": "set DmaapReq",

+        "xml": "<set>\n<parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>\n<parameter name='lcm-dmaap.correlation-id' value=\"`$rollback-input.common-header.request-id + '-' + $rollback-input.common-header.sub-request-id`\"/>\n<parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>\n<parameter name='lcm-dmaap.rpc-name' value='rollback'/>\n<parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>\n<parameter name='lcm-dmaap.timestamp' value='`$rollback-input.common-header.timestamp`'/>\n<parameter name='lcm-dmaap.api-ver' value='`$rollback-input.common-header.api-ver`'/>\n<parameter name='lcm-dmaap.originator-id' value='`$rollback-input.common-header.originator-id`'/>\n<parameter name='lcm-dmaap.request-id' value='`$rollback-input.common-header.request-id`'/>\n<parameter name='lcm-dmaap.sub-request-id' value='`$rollback-input.common-header.sub-request-id`'/>\n<parameter name='lcm-dmaap.flags.mode' value='`$rollback-input.common-header.flags.mode`'/>\n<parameter name='lcm-dmaap.flags.force' value='`$rollback-input.common-header.flags.force`'/>\n<parameter name='lcm-dmaap.flags.ttl' value='`$rollback-input.common-header.flags.ttl`'/>\n<parameter name='lcm-dmaap.status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />\n<parameter name='lcm-dmaap.status.message' value='`$org.onap.appc.adapter.ansible.message`'/>\n",

+        "comments": "",

+        "x": 1662.1666259765625,

+        "y": 801.0833740234375,

+        "z": "6f1e5235.30d27c",

+        "wires": []

+    },

+    {

+        "id": "f4b3d5c4.d9b698",

+        "type": "not-found",

+        "name": "not-found",

+        "xml": "<outcome value='not-found'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 728.9999389648438,

+        "y": 654.0000610351562,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "9b946286.c1fc1"

+            ]

+        ]

+    },

+    {

+        "id": "2c09132b.2c598c",

+        "type": "set",

+        "name": "set Defaults",

+        "xml": "<set>\n<parameter name='org.onap.appc.adapter.ansible.result.code' value='401'/>\n<parameter name='org.onap.appc.adapter.ansible.message' value='Ansible Adapter was not found'/>\n",

+        "comments": "",

+        "x": 1019.9999389648438,

+        "y": 613,

+        "z": "6f1e5235.30d27c",

+        "wires": []

+    },

+    {

+        "id": "9b946286.c1fc1",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 865.9999389648438,

+        "y": 648.0000610351562,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "2c09132b.2c598c",

+                "c157f020.8fa16"

+            ]

+        ]

+    },

+    {

+        "id": "8603ce63.b7c47",

+        "type": "set",

+        "name": "set default values",

+        "xml": "<set>\n<parameter name='status.code' value='200' />\n<parameter name='status.message' value='unexpected return from DG' />\n<parameter name='quote' value=\"'\" />\n",

+        "comments": "",

+        "x": 498,

+        "y": 245,

+        "z": "6f1e5235.30d27c",

+        "wires": []

+    },

+    {

+        "id": "16e37417.d2c8bc",

+        "type": "record",

+        "name": "record",

+        "xml": "<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder\"> \n\t<parameter name=\"logger\" value=\"message-log\"/> \n\t<parameter name=\"field1\" value='`$playbookname`'/>\n\t<parameter name=\"field2\" value='`$nodelist`'/>",

+        "comments": "",

+        "outputs": 1,

+        "x": 426.9998779296875,

+        "y": 609,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "cc7baeb9.6a3dc",

+        "type": "switchNode",

+        "name": "switch pnf-flag",

+        "xml": "<switch test='`$payloadJson.pnf-flag`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 480,

+        "y": 346,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "b515ebb.9b7de18",

+                "ea8f46f7.654968"

+            ]

+        ]

+    },

+    {

+        "id": "9a79bc82.279ce",

+        "type": "execute",

+        "name": "execute jsonStringToCtx",

+        "xml": "<execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>\n\t<parameter name='source' value='rollback-input.payload' />\n\t<parameter name='outputPath' value='payloadJson' />\n\t<parameter name='isEscaped' value='true' />",

+        "comments": "",

+        "outputs": 1,

+        "x": 512,

+        "y": 292,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            []

+        ]

+    },

+    {

+        "id": "b515ebb.9b7de18",

+        "type": "outcome",

+        "name": "true",

+        "xml": "<outcome value='true'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 677,

+        "y": 325,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "d8920a01.f108b8"

+            ]

+        ]

+    },

+    {

+        "id": "ea8f46f7.654968",

+        "type": "outcome",

+        "name": "other",

+        "xml": "<outcome value='Other'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 677,

+        "y": 386,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "32f9eda7.1c1082"

+            ]

+        ]

+    },

+    {

+        "id": "32f9eda7.1c1082",

+        "type": "block",

+        "name": "block",

+        "xml": "<block>\n",

+        "atomic": "false",

+        "comments": "",

+        "outputs": 1,

+        "x": 824.9999389648438,

+        "y": 385,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "3756c2a1.fa5d6e"

+            ]

+        ]

+    },

+    {

+        "id": "d8920a01.f108b8",

+        "type": "set",

+        "name": "set AnsibleReq",

+        "xml": "<set>\n<parameter name='nodelist' value=\"`'[' + $quote + $payloadJson.ipaddress-v4-oam +  $quote + ']'`\"/>\n<parameter name='playbookname' value='`$prop.lcm.pnf.rollback.playbookname`'/>\n",

+        "comments": "",

+        "x": 838,

+        "y": 323,

+        "z": "6f1e5235.30d27c",

+        "wires": []

+    },

+    {

+        "id": "b9b832a7.ed87d",

+        "type": "switchNode",

+        "name": "switch playbookname",

+        "xml": "<switch test='`$playbookname`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 477,

+        "y": 477,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "5725646c.c7b37c"

+            ]

+        ]

+    },

+    {

+        "id": "5725646c.c7b37c",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 648,

+        "y": 478,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "4546e558.72429c"

+            ]

+        ]

+    },

+    {

+        "id": "4546e558.72429c",

+        "type": "set",

+        "name": "set playbookname",

+        "xml": "<set>\n<parameter name='nodelist' value=\"`$prop.ansible.nodelist`\"/>\n<parameter name='playbookname' value='`$prop.lcm.rollback.playbookname`'/>",

+        "comments": "",

+        "x": 838,

+        "y": 477,

+        "z": "6f1e5235.30d27c",

+        "wires": []

+    },

+    {

+        "id": "763cfac9.48a8a4",

+        "type": "switchNode",

+        "name": "switch nodelist",

+        "xml": "<switch test='`$nodelist`'>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 467,

+        "y": 536,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "76eb51c0.552ce",

+                "178c823.496cd7e"

+            ]

+        ]

+    },

+    {

+        "id": "76eb51c0.552ce",

+        "type": "outcome",

+        "name": "null",

+        "xml": "<outcome value=''>\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 647,

+        "y": 529,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "66b6e37a.9e852c"

+            ]

+        ]

+    },

+    {

+        "id": "66b6e37a.9e852c",

+        "type": "set",

+        "name": "set nodelist",

+        "xml": "<set>\n<parameter name='nodelist' value=\"`$prop.ansible.nodelist`\"/>",

+        "comments": "",

+        "x": 804,

+        "y": 543,

+        "z": "6f1e5235.30d27c",

+        "wires": []

+    },

+    {

+        "id": "178c823.496cd7e",

+        "type": "outcome",

+        "name": "empty",

+        "xml": "<outcome value=\"['']\">\n\n",

+        "comments": "",

+        "outputs": 1,

+        "x": 646,

+        "y": 573,

+        "z": "6f1e5235.30d27c",

+        "wires": [

+            [

+                "66b6e37a.9e852c"

+            ]

+        ]

+    },

+    {

+        "id": "3756c2a1.fa5d6e",

+        "type": "returnFailure",

+        "name": "return failure",

+        "xml": "<return status='failure'>\n<parameter name='status.code' value='401' />\n<parameter name='status.message' value='Currently only support PNF.' />",

+        "comments": "",

+        "x": 998,

+        "y": 385,

+        "z": "6f1e5235.30d27c",

+        "wires": []

+    }

+]
\ No newline at end of file
diff --git a/platform-logic/lcm/src/main/resources/graph.versions b/platform-logic/lcm/src/main/resources/graph.versions
index ea54b27..40fe3a9 100644
--- a/platform-logic/lcm/src/main/resources/graph.versions
+++ b/platform-logic/lcm/src/main/resources/graph.versions
@@ -10,3 +10,4 @@
 LCM snapshot ${project.version} sync
 LCM config-scale-out ${project.version} sync
 LCM health-check ${project.version} sync
+LCM rollback ${project.version} sync
diff --git a/platform-logic/lcm/src/main/xml/LCM_rollback.xml b/platform-logic/lcm/src/main/xml/LCM_rollback.xml
new file mode 100644
index 0000000..bb540b6
--- /dev/null
+++ b/platform-logic/lcm/src/main/xml/LCM_rollback.xml
@@ -0,0 +1,340 @@
+<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='LCM' version='${project.version}'>

+    <method rpc='rollback' mode='sync'>

+        <block atomic='true'>

+            <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >

+                <parameter name='fileName' value='%SDNC_CONFIG_DIR%/lcm-dg.properties' />

+                <parameter name='contextPrefix' value='prop' />

+            </execute>

+            <set>

+                <parameter name='status.code' value='200' />

+                <parameter name='status.message' value='unexpected return from DG' />

+                <parameter name='quote' value="'" />

+            </set>

+            <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils' method='jsonStringToCtx'>

+                <parameter name='source' value='rollback-input.payload' />

+                <parameter name='outputPath' value='payloadJson' />

+                <parameter name='isEscaped' value='true' />

+            </execute>

+            <switch test='`$payloadJson.pnf-flag`'>

+                <outcome value='true'>

+                    <set>

+                        <parameter name='nodelist' value="`'[' + $quote + $payloadJson.ipaddress-v4-oam +  $quote + ']'`"/>

+                        <parameter name='playbookname' value='`$prop.lcm.pnf.rollback.playbookname`'/>

+                    </set>

+                </outcome>

+                <outcome value='Other'>

+                    <block>

+                        <return status='failure'>

+                            <parameter name='status.code' value='401' />

+                            <parameter name='status.message' value='Currently only support PNF.' />

+                        </return>

+                    </block>

+                </outcome>

+            </switch>

+            <switch test='`$playbookname`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='nodelist' value="`$prop.ansible.nodelist`"/>

+                        <parameter name='playbookname' value='`$prop.lcm.rollback.playbookname`'/>

+                    </set>

+                </outcome>

+            </switch>

+            <switch test='`$nodelist`'>

+                <outcome value=''>

+                    <set>

+                        <parameter name='nodelist' value="`$prop.ansible.nodelist`"/>

+                    </set>

+                </outcome>

+                <outcome value="['']">

+                    <set>

+                        <parameter name='nodelist' value="`$prop.ansible.nodelist`"/>

+                    </set>

+                </outcome>

+            </switch>

+            <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                <parameter name="logger" value="message-log"/>

+                <parameter name="field1" value='`$playbookname`'/>

+                <parameter name="field2" value='`$nodelist`'/>

+            </record>

+            <execute plugin='org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapter' method='reqExec' >

+                <parameter name='AgentUrl' value='`$prop.ansible.agenturl`'/>

+                <parameter name='User' value='`$prop.ansible.user`'/>

+                <parameter name='Password' value='`$prop.ansible.password`'/>

+                <parameter name='LocalParameters' value='`$prop.ansible.lcm.localparameters`'/>

+                <parameter name='EnvParameters' value='`$rollback-input.payload`'/>

+                <parameter name='NodeList' value="`$nodelist`"/>

+                <parameter name='Timeout' value='`$prop.ansible.timeout`'/>

+                <parameter name='Version' value='`$prop.ansible.version`'/>

+                <parameter name='Id' value='`$rollback-input.common-header.request-id`'/>

+                <parameter name='PlaybookName' value='`$playbookname`'/>

+                <outcome value='not-found'>

+                    <block>

+                        <set>

+                            <parameter name='org.onap.appc.adapter.ansible.result.code' value='401'/>

+                            <parameter name='org.onap.appc.adapter.ansible.message' value='Ansible Adapter was not found'/>

+                        </set>

+                        <block>

+                            <set>

+                                <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>

+                                <parameter name='lcm-dmaap.correlation-id' value="`$rollback-input.common-header.request-id + '-' + $rollback-input.common-header.sub-request-id`"/>

+                                <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                <parameter name='lcm-dmaap.rpc-name' value='rollback'/>

+                                <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                <parameter name='lcm-dmaap.timestamp' value='`$rollback-input.common-header.timestamp`'/>

+                                <parameter name='lcm-dmaap.api-ver' value='`$rollback-input.common-header.api-ver`'/>

+                                <parameter name='lcm-dmaap.originator-id' value='`$rollback-input.common-header.originator-id`'/>

+                                <parameter name='lcm-dmaap.request-id' value='`$rollback-input.common-header.request-id`'/>

+                                <parameter name='lcm-dmaap.sub-request-id' value='`$rollback-input.common-header.sub-request-id`'/>

+                                <parameter name='lcm-dmaap.flags.mode' value='`$rollback-input.common-header.flags.mode`'/>

+                                <parameter name='lcm-dmaap.flags.force' value='`$rollback-input.common-header.flags.force`'/>

+                                <parameter name='lcm-dmaap.flags.ttl' value='`$rollback-input.common-header.flags.ttl`'/>

+                                <parameter name='lcm-dmaap.status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />

+                                <parameter name='lcm-dmaap.status.message' value='`$org.onap.appc.adapter.ansible.message`'/>

+                            </set>

+                            <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.lcm.dmaap.publish.templatefile`" />

+                                <parameter name='restapiUrl' value='`$prop.lcm.dmaap.url`' />

+                                <parameter name='restapiUser' value='`$prop.lcm.dmaap.user`' />

+                                <parameter name='restapiPassword' value='`$prop.lcm.dmaap.password`' />

+                                <parameter name='format' value='json' />

+                                <parameter name='httpMethod' value='POST' />

+                                <parameter name='contentType' value='application/json' />

+                                <parameter name="responsePrefix" value="lcm" />

+                                <outcome value='failure'>

+                                    <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                        <parameter name="logger" value="message-log"/>

+                                        <parameter name="field1" value='Failed to Publish to DMaap'/>

+                                    </record>

+                                </outcome>

+                            </execute>

+                            <return status='failure'>

+                                <parameter name='status.code' value='401' />

+                                <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />

+                            </return>

+                        </block>

+                    </block>

+                </outcome>

+                <outcome value='failure'>

+                    <block>

+                        <set>

+                            <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>

+                            <parameter name='lcm-dmaap.correlation-id' value="`$rollback-input.common-header.request-id + '-' + $rollback-input.common-header.sub-request-id`"/>

+                            <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                            <parameter name='lcm-dmaap.rpc-name' value='rollback'/>

+                            <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                            <parameter name='lcm-dmaap.timestamp' value='`$rollback-input.common-header.timestamp`'/>

+                            <parameter name='lcm-dmaap.api-ver' value='`$rollback-input.common-header.api-ver`'/>

+                            <parameter name='lcm-dmaap.originator-id' value='`$rollback-input.common-header.originator-id`'/>

+                            <parameter name='lcm-dmaap.request-id' value='`$rollback-input.common-header.request-id`'/>

+                            <parameter name='lcm-dmaap.sub-request-id' value='`$rollback-input.common-header.sub-request-id`'/>

+                            <parameter name='lcm-dmaap.flags.mode' value='`$rollback-input.common-header.flags.mode`'/>

+                            <parameter name='lcm-dmaap.flags.force' value='`$rollback-input.common-header.flags.force`'/>

+                            <parameter name='lcm-dmaap.flags.ttl' value='`$rollback-input.common-header.flags.ttl`'/>

+                            <parameter name='lcm-dmaap.status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />

+                            <parameter name='lcm-dmaap.status.message' value='`$org.onap.appc.adapter.ansible.message`'/>

+                        </set>

+                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.lcm.dmaap.publish.templatefile`" />

+                            <parameter name='restapiUrl' value='`$prop.lcm.dmaap.url`' />

+                            <parameter name='restapiUser' value='`$prop.lcm.dmaap.user`' />

+                            <parameter name='restapiPassword' value='`$prop.lcm.dmaap.password`' />

+                            <parameter name='format' value='json' />

+                            <parameter name='httpMethod' value='POST' />

+                            <parameter name='contentType' value='application/json' />

+                            <parameter name="responsePrefix" value="lcm" />

+                            <outcome value='failure'>

+                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                    <parameter name="logger" value="message-log"/>

+                                    <parameter name="field1" value='Failed to Publish to DMaap'/>

+                                </record>

+                            </outcome>

+                        </execute>

+                        <return status='failure'>

+                            <parameter name='status.code' value='401' />

+                            <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />

+                        </return>

+                    </block>

+                </outcome>

+                <outcome value='Other'>

+                    <switch test="`$org.onap.appc.adapter.ansible.result.code`">

+                        <outcome value='101'>

+                            <block>

+                                <set>

+                                    <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>

+                                    <parameter name='lcm-dmaap.correlation-id' value="`$rollback-input.common-header.request-id + '-' + $rollback-input.common-header.sub-request-id`"/>

+                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                    <parameter name='lcm-dmaap.rpc-name' value='rollback'/>

+                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                    <parameter name='lcm-dmaap.timestamp' value='`$rollback-input.common-header.timestamp`'/>

+                                    <parameter name='lcm-dmaap.api-ver' value='`$rollback-input.common-header.api-ver`'/>

+                                    <parameter name='lcm-dmaap.originator-id' value='`$rollback-input.common-header.originator-id`'/>

+                                    <parameter name='lcm-dmaap.request-id' value='`$rollback-input.common-header.request-id`'/>

+                                    <parameter name='lcm-dmaap.sub-request-id' value='`$rollback-input.common-header.sub-request-id`'/>

+                                    <parameter name='lcm-dmaap.flags.mode' value='`$rollback-input.common-header.flags.mode`'/>

+                                    <parameter name='lcm-dmaap.flags.force' value='`$rollback-input.common-header.flags.force`'/>

+                                    <parameter name='lcm-dmaap.flags.ttl' value='`$rollback-input.common-header.flags.ttl`'/>

+                                    <parameter name='lcm-dmaap.status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />

+                                    <parameter name='lcm-dmaap.status.message' value='`$org.onap.appc.adapter.ansible.message`'/>

+                                </set>

+                                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                    <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.lcm.dmaap.publish.templatefile`" />

+                                    <parameter name='restapiUrl' value='`$prop.lcm.dmaap.url`' />

+                                    <parameter name='restapiUser' value='`$prop.lcm.dmaap.user`' />

+                                    <parameter name='restapiPassword' value='`$prop.lcm.dmaap.password`' />

+                                    <parameter name='format' value='json' />

+                                    <parameter name='httpMethod' value='POST' />

+                                    <parameter name='contentType' value='application/json' />

+                                    <parameter name="responsePrefix" value="lcm" />

+                                    <outcome value='failure'>

+                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                            <parameter name="logger" value="message-log"/>

+                                            <parameter name="field1" value='Failed to Publish to DMaap'/>

+                                        </record>

+                                    </outcome>

+                                </execute>

+                                <return status='failure'>

+                                    <parameter name='status.code' value='401' />

+                                    <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />

+                                </return>

+                            </block>

+                        </outcome>

+                        <outcome value='500'>

+                            <block>

+                                <set>

+                                    <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>

+                                    <parameter name='lcm-dmaap.correlation-id' value="`$rollback-input.common-header.request-id + '-' + $rollback-input.common-header.sub-request-id`"/>

+                                    <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                    <parameter name='lcm-dmaap.rpc-name' value='rollback'/>

+                                    <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                    <parameter name='lcm-dmaap.timestamp' value='`$rollback-input.common-header.timestamp`'/>

+                                    <parameter name='lcm-dmaap.api-ver' value='`$rollback-input.common-header.api-ver`'/>

+                                    <parameter name='lcm-dmaap.originator-id' value='`$rollback-input.common-header.originator-id`'/>

+                                    <parameter name='lcm-dmaap.request-id' value='`$rollback-input.common-header.request-id`'/>

+                                    <parameter name='lcm-dmaap.sub-request-id' value='`$rollback-input.common-header.sub-request-id`'/>

+                                    <parameter name='lcm-dmaap.flags.mode' value='`$rollback-input.common-header.flags.mode`'/>

+                                    <parameter name='lcm-dmaap.flags.force' value='`$rollback-input.common-header.flags.force`'/>

+                                    <parameter name='lcm-dmaap.flags.ttl' value='`$rollback-input.common-header.flags.ttl`'/>

+                                    <parameter name='lcm-dmaap.status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />

+                                    <parameter name='lcm-dmaap.status.message' value='`$org.onap.appc.adapter.ansible.message`'/>

+                                </set>

+                                <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                    <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.lcm.dmaap.publish.templatefile`" />

+                                    <parameter name='restapiUrl' value='`$prop.lcm.dmaap.url`' />

+                                    <parameter name='restapiUser' value='`$prop.lcm.dmaap.user`' />

+                                    <parameter name='restapiPassword' value='`$prop.lcm.dmaap.password`' />

+                                    <parameter name='format' value='json' />

+                                    <parameter name='httpMethod' value='POST' />

+                                    <parameter name='contentType' value='application/json' />

+                                    <parameter name="responsePrefix" value="lcm" />

+                                    <outcome value='failure'>

+                                        <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                            <parameter name="logger" value="message-log"/>

+                                            <parameter name="field1" value='Failed to Publish to DMaap'/>

+                                        </record>

+                                    </outcome>

+                                </execute>

+                                <return status='failure'>

+                                    <parameter name='status.code' value='401' />

+                                    <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />

+                                </return>

+                            </block>

+                        </outcome>

+                        <outcome value='100'>

+                            <execute plugin='org.onap.ccsdk.sli.adaptors.ansible.AnsibleAdapter' method='reqExecResult' >

+                                <parameter name='AgentUrl' value='`$prop.ansible.agenturl`'/>

+                                <parameter name='User' value='`$prop.ansible.user`'/>

+                                <parameter name='Password' value='`$prop.ansible.password`'/>

+                                <parameter name='Id' value='`$org.onap.appc.adapter.ansible.Id`'/>

+                                <parameter name='PlaybookName' value='`$playbookname`'/>

+                                <outcome value='failure'>

+                                    <block>

+                                        <set>

+                                            <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>

+                                            <parameter name='lcm-dmaap.correlation-id' value="`$rollback-input.common-header.request-id + '-' + $rollback-input.common-header.sub-request-id`"/>

+                                            <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                            <parameter name='lcm-dmaap.rpc-name' value='rollback'/>

+                                            <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                            <parameter name='lcm-dmaap.timestamp' value='`$rollback-input.common-header.timestamp`'/>

+                                            <parameter name='lcm-dmaap.api-ver' value='`$rollback-input.common-header.api-ver`'/>

+                                            <parameter name='lcm-dmaap.originator-id' value='`$rollback-input.common-header.originator-id`'/>

+                                            <parameter name='lcm-dmaap.request-id' value='`$rollback-input.common-header.request-id`'/>

+                                            <parameter name='lcm-dmaap.sub-request-id' value='`$rollback-input.common-header.sub-request-id`'/>

+                                            <parameter name='lcm-dmaap.flags.mode' value='`$rollback-input.common-header.flags.mode`'/>

+                                            <parameter name='lcm-dmaap.flags.force' value='`$rollback-input.common-header.flags.force`'/>

+                                            <parameter name='lcm-dmaap.flags.ttl' value='`$rollback-input.common-header.flags.ttl`'/>

+                                            <parameter name='lcm-dmaap.status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />

+                                            <parameter name='lcm-dmaap.status.message' value='`$org.onap.appc.adapter.ansible.message`'/>

+                                        </set>

+                                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.lcm.dmaap.publish.templatefile`" />

+                                            <parameter name='restapiUrl' value='`$prop.lcm.dmaap.url`' />

+                                            <parameter name='restapiUser' value='`$prop.lcm.dmaap.user`' />

+                                            <parameter name='restapiPassword' value='`$prop.lcm.dmaap.password`' />

+                                            <parameter name='format' value='json' />

+                                            <parameter name='httpMethod' value='POST' />

+                                            <parameter name='contentType' value='application/json' />

+                                            <parameter name="responsePrefix" value="lcm" />

+                                            <outcome value='failure'>

+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                    <parameter name="logger" value="message-log"/>

+                                                    <parameter name="field1" value='Failed to Publish to DMaap'/>

+                                                </record>

+                                            </outcome>

+                                        </execute>

+                                        <return status='failure'>

+                                            <parameter name='status.code' value='401' />

+                                            <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`' />

+                                        </return>

+                                    </block>

+                                </outcome>

+                                <outcome value='success'>

+                                    <block>

+                                        <set>

+                                            <parameter name='lcm-dmaap.version' value='`$prop.lcm.dmaap.version`'/>

+                                            <parameter name='lcm-dmaap.correlation-id' value="`$rollback-input.common-header.request-id + '-' + $rollback-input.common-header.sub-request-id`"/>

+                                            <parameter name='lcm-dmaap.partition' value='`$prop.lcm.dmaap.partition`'/>

+                                            <parameter name='lcm-dmaap.rpc-name' value='rollback'/>

+                                            <parameter name='lcm-dmaap.type' value='`$prop.lcm.dmaap.type`'/>

+                                            <parameter name='lcm-dmaap.timestamp' value='`$rollback-input.common-header.timestamp`'/>

+                                            <parameter name='lcm-dmaap.api-ver' value='`$rollback-input.common-header.api-ver`'/>

+                                            <parameter name='lcm-dmaap.originator-id' value='`$rollback-input.common-header.originator-id`'/>

+                                            <parameter name='lcm-dmaap.request-id' value='`$rollback-input.common-header.request-id`'/>

+                                            <parameter name='lcm-dmaap.sub-request-id' value='`$rollback-input.common-header.sub-request-id`'/>

+                                            <parameter name='lcm-dmaap.flags.mode' value='`$rollback-input.common-header.flags.mode`'/>

+                                            <parameter name='lcm-dmaap.flags.force' value='`$rollback-input.common-header.flags.force`'/>

+                                            <parameter name='lcm-dmaap.flags.ttl' value='`$rollback-input.common-header.flags.ttl`'/>

+                                            <parameter name='lcm-dmaap.status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />

+                                            <parameter name='lcm-dmaap.status.message' value='`$org.onap.appc.adapter.ansible.message`'/>

+                                        </set>

+                                        <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >

+                                            <parameter name='templateFileName' value="`$prop.restapi.templateDir + '/' + $prop.restapi.lcm.dmaap.publish.templatefile`" />

+                                            <parameter name='restapiUrl' value='`$prop.lcm.dmaap.url`' />

+                                            <parameter name='restapiUser' value='`$prop.lcm.dmaap.user`' />

+                                            <parameter name='restapiPassword' value='`$prop.lcm.dmaap.password`' />

+                                            <parameter name='format' value='json' />

+                                            <parameter name='httpMethod' value='POST' />

+                                            <parameter name='contentType' value='application/json' />

+                                            <parameter name="responsePrefix" value="lcm" />

+                                            <outcome value='failure'>

+                                                <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">

+                                                    <parameter name="logger" value="message-log"/>

+                                                    <parameter name="field1" value='Failed to Publish to DMaap'/>

+                                                </record>

+                                            </outcome>

+                                        </execute>

+                                        <return status='success'>

+                                            <parameter name='status.code' value='`$org.onap.appc.adapter.ansible.result.code`' />

+                                            <parameter name='status.message' value='`$org.onap.appc.adapter.ansible.message`'/>

+                                        </return>

+                                    </block>

+                                </outcome>

+                            </execute>

+                        </outcome>

+                    </switch>

+                </outcome>

+            </execute>

+        </block>

+    </method>

+</service-logic>
\ No newline at end of file
diff --git a/platform-logic/restapi-templates/src/main/json/sdlan-bridge-domain.json b/platform-logic/restapi-templates/src/main/json/sdlan-bridge-domain.json
new file mode 100644
index 0000000..1d0f8bd
--- /dev/null
+++ b/platform-logic/restapi-templates/src/main/json/sdlan-bridge-domain.json
@@ -0,0 +1,17 @@
+{
+  "bridgeDomains": [
+   {
+     "id": "",
+     "deviceId": ${prop.lan.deviceId},
+     "ports": [
+       {
+          "id": ${prop.lan.devicePortId},
+          "tagMode": "untag"
+       }
+    ],
+     "vlanId":  ${prop.lan.vlanId},
+     "description": "spoke2 test vlan L2 port"
+   }
+ ]
+}
+
diff --git a/platform-logic/restapi-templates/src/main/json/sdlan-ip-subnets-del.json b/platform-logic/restapi-templates/src/main/json/sdlan-ip-subnets-del.json
new file mode 100644
index 0000000..4e42e61
--- /dev/null
+++ b/platform-logic/restapi-templates/src/main/json/sdlan-ip-subnets-del.json
@@ -0,0 +1,8 @@
+{
+    "tnps": [
+        {
+            "id": ${prop.lan.lanPortId},            
+        }
+    ]
+}
+
diff --git a/platform-logic/restapi-templates/src/main/json/sdlan-ip-subnets.json b/platform-logic/restapi-templates/src/main/json/sdlan-ip-subnets.json
new file mode 100644
index 0000000..85ccf15
--- /dev/null
+++ b/platform-logic/restapi-templates/src/main/json/sdlan-ip-subnets.json
@@ -0,0 +1,37 @@
+{
+  "IPSubnets":[
+  {
+    "vpnId": ${prop.vpnId},
+    "siteId": ${prop.lan.siteId},
+    "deviceId": ${prop.lan.deviceId},
+    "id": "",
+    "interfaceType": "interface",
+    "interfaceName": "interface",
+    "portId": ${prop.lan.devicePortId},
+    "vlanId": null,
+    "ipAddress": ${prop.lan.ip-address},
+    "prefixLength": ${prop.lan.prefixLength},
+    "vrrp": {
+      "enable": false,
+      "vrrpId": null,
+      "virtualIpAddress": null,
+      "defaultRole": null,
+      "preemptDelay": null
+    },
+    "dhcp": {
+      "enable": false,
+      "dhcpServiceType": null,
+      "dhcpServer": null,
+      "dhcpRelay": null
+    },
+    "securityZone": "trust",
+    "proxyArp": "false",
+    "attributes": {
+       "mtu": null,
+       "TCPmss": null
+      },
+    "description": "hub1 L3 test"
+  }
+]
+}
+
diff --git a/platform-logic/restapi-templates/src/main/json/sdlan-port-del.json b/platform-logic/restapi-templates/src/main/json/sdlan-port-del.json
new file mode 100644
index 0000000..914bb66
--- /dev/null
+++ b/platform-logic/restapi-templates/src/main/json/sdlan-port-del.json
@@ -0,0 +1,8 @@
+{
+    "tnps": [
+        {
+            "id": ${prop.lan.devicePortId},            
+        }
+    ]
+}
+
diff --git a/platform-logic/restapi-templates/src/main/json/sdlan-port.json b/platform-logic/restapi-templates/src/main/json/sdlan-port.json
new file mode 100644
index 0000000..a499d9a
--- /dev/null
+++ b/platform-logic/restapi-templates/src/main/json/sdlan-port.json
@@ -0,0 +1,23 @@
+{
+    "ports": [
+        {
+            "id": "",
+            "portType": ${prop.lan.portType},
+            "portNumber": ${prop.lan.portNumber},
+            "deviceId": ${prop.lan.deviceId},
+            "portSwitch": ${prop.lan.portSwitch},
+            "linkInfo": {
+                 "linkType": "Ethernet",
+                 "cellular": null,
+                 "atm": null,
+                 "ethernet": {
+                      "negotiationMode": "manual",
+                      "media": "copper",
+                      "duplex": "half",
+                      "speed": 10
+                 }
+            }
+        }
+    ]
+}
+